只有 EF 多对多的问题 :( 一切都适用于我的模型,但在添加这行代码之前,我无法对多对多实体执行 CRUD
modelBuilder.Entity<Advert>()
.HasMany(a => a.WhoAmILookingForTags)
.WithMany(a => a.Adverts)
.Map(at =>
{
at.ToTable("AdvertTags");
at.MapLeftKey("AdvertId");
at.MapRightKey("TagId");
});
广告也与竞争和用户有关
modelBuilder.Entity<Advert>().HasRequired(u => u.User);
modelBuilder.Entity<Advert>().HasRequired(c => c.Competition);
当我打开 ServerExplorer 并查看 Advert 的 TableData 时,我看到 Advert 和 User 和 Competition 之间存在连接(字段 CompetitionId 和 UserId 不为空)并且表 AdvertTags 包含 Adverts 和 Tags 的键但是在查看时我尝试显示 model.user .name(广告模型)字段为空(标签和比赛相同)
例如,当在控制器中我这样做:
Advert advert = db.Adverts.Find(id);
if (advert == null)
{
return HttpNotFound();
}
在视图中,我执行模型 => model.User.Name 并运行应用程序,用户名字段中没有显示任何内容。
但是当我迭代所有广告并写下smth。像这样。
database.Adverts.Include(a => a.User).Include.(a => a.Competition)
.Include(a => a.WhoWhoAmILookingForTags)
一切都很好。
我希望我足够清楚。