我建立了这样的多对多关系(删除所有不相关的属性):
public class Makes
{
[Key]
public int MakeId { get; set; }
public ICollection<KeyWords> KeyWords {get; set;}
}
public class KeyWords
{
public KeyWords()
{
Makes = new HashSet<Makes>();
}
[Key]
public int KeyWordsId { get; set;}
public string KeyWord { get; set;}
}
然后在上下文定义中:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<KeyWords>().HasMany(w => w.Makes).WithMany(kw => kw.KeyWords).Map(
m =>
{
m.MapLeftKey("KeyWords_KeyWordsID");
m.MapRightKey("Makes_MakesID");
m.ToTable("MakesKeyWords");
});
base.OnModelCreating(modelBuilder);
}
当我逐步完成数据库播种时,当我创建一些 Make 并创建一些关键字然后将一些关键字添加到 make 时,看起来实体已正确创建。我可以使用手表很好地在两个实体之间导航。
数据库初始化完成后,我查看数据库,看起来所有数据都在那里。但是,当我在视图中实际显示关键字时,我知道的 Makes 我分配了一个关键字的计数为 0:
@if (Model != null)
{
Foreach(models.Makes item in model.Makes)
{
if (item.KeyWords.Count > 0)
{
<div class="KeyWords">
@foreach (Models.KeyWords kw in item.KeyWords)
{
<span class="KeyWord">@kw.KeyWord</span>
}
</div>
}
}
}
没有任何反应,关键字不再与品牌相关联。
我错过了什么?
谢谢!