【发布时间】:2013-08-11 20:22:30
【问题描述】:
所以我刚刚使用 virtual 关键字将我的外键属性更改为延迟加载。
在我的实体 SupportTicket 中,我得到了对 UserProfile 的外键引用:
[Required]
public virtual UserProfile Owner { get; set; }
我的 Find 方法如下所示:
public static SupportTicket Find(int id)
{
using (DatabaseContext db = new DatabaseContext())
{
SupportTicket ticket = db.SupportTickets.SingleOrDefault(x => x.Id == id);
return ticket;
}
}
我的问题是,每当我从 Find 方法获得 SupportTicket 时,我都无法访问 SupportTicket 的 UserProfile,因为我在数据库上下文之外。
我以前没有使用过延迟加载,所以我应该 Include() 实体中的每个外键吗?
【问题讨论】:
-
是的,延迟加载仅在上下文的生命周期内有效。无论您在其范围之外需要什么数据,都应通过预先加载 (
Include) 获取。
标签: c# database entity-framework