【发布时间】:2016-10-09 06:39:17
【问题描述】:
尝试设置基本的 EF6 可选 1:1。非常令人沮丧。我已经阅读了很多并且丢失了帖子。
我有两个实体,Guests 和 Seats,每个实体都可以单独存在,一个座位不需要一个客人,一个客人不需要一个座位。
嘉宾模特:
public int ID { get; set; }
public int? SeatID { get; set; }
[Required]
public string FirstName { get; set; }
//Link to Seat
public Seat Seat { get; set; }
座椅型号:
public int ID { get; set; }
public int? GuestID { get; set; }
[Required]
public string SeatNumber { get; set; }
public bool Occupied { get { return (GuestID == null ? true : false); } }
//Link to Guest
public Guest Guest{ get; set; }
到这一步我遇到了很多问题。我必须将此添加到我的模型创建中才能使关系起作用:
modelBuilder.Entity<Seat>()
.HasOptional(g => g.Guest)
.WithOptionalDependent(s => s.Seat);
现在我的应用程序正在运行,但是当我尝试使用 include 方法加载相关数据时,它只是空白,什么都没有。
var seats = db.Seats.Include(s => s.Guest);
return View(seats.ToList());
在我看来,我使用
@Html.DisplayFor(modelItem => item.Guest.FirstName)
我想知道如何使 include 语句工作,最好不要延迟加载(或者即使我必须这样做)。另外,我不想有 SeatAssignment 表,我考虑过这条路。
我可以使用 Viewmodel 来实现这一点,但我不明白为什么 1:1 选项没有加载相关数据。
根据要求,这里是生成的架构...这里肯定发生了一些奇怪的事情。作为旁注,我可以使它与视图模型一起使用,但我不想这样做。
【问题讨论】:
-
你能展示不同的流派表模式吗?
-
将它添加到我的问题中,现在我知道它为什么不起作用但我对它是如何产生的更加困惑。
标签: c# entity-framework linq eager-loading