我想用EF代碼先創建一個多對多關係的數據庫。 ASP MVC多對多的關係 - 從關聯表中檢索數據
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>
}
我期望表含有「說明1」和「標籤1」,但我得到的只有「內容描述」 。我真的不明白問題在哪裏。什麼是正確的方法來做到這一點?
非常感謝!這正是問題出在哪裏 –
沒問題,這是一個常見的首要疑難問題。請注意,非收集導航屬性也是這種情況。 – danludwig
-1用於引入SELECT N + 1問題。 – saintedlama