最初に EF コードを使用して、多対多の関係を持つデータベースを作成しようとしています。
public class Item
{
public int ItemId { get; set; }
public String Description { get; set; }
public ICollection<Tag> Tags { get; set; }
public Item()
{
Tags = new HashSet<Tag>();
}
}
public class Tag
{
public int TagId { get; set; }
public String Text { get; set; }
public ICollection<Item> Presentations { get; set; }
public Tag()
{
Presentations = new HashSet<Item>();
}
}
public class ItemsEntities : DbContext
{
public DbSet<Item> Items { get; set; }
public DbSet<Tag> Tags { get; set; }
}
その後、データベースにアイテムを追加しています
var tag = new Tag { Text = "tag1" };
var item = new Item
{
Description = "description1",
Tags = new List<Tag>()
};
item.Tags.Add(tag);
using (var db = new ItemsEntities())
{
db.Items.Add(item);
db.SaveChanges();
}
問題は、関連付けられたタグを持つアイテムを出力できないことです。コントローラーは次のようになります。
public ActionResult Index()
{
ItemsEntities db = new ItemsEntities();
return View(db.Items.ToList());
}
ビューページには次のコードがあります。
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(model => item.Description)
</td>
<td>
@foreach (var tag in item.Tags)
{
@tag.Text
}
</td>
</tr>
}
テーブルには「description1」と「tag1」が含まれているはずですが、「description1」しか得られません。どこに問題があるのか 本当にわかりません。これを行う正しい方法は何ですか?