0

只有 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)

一切都很好。

我希望我足够清楚。

4

0 回答 0