在SqlQuery中恢复虚拟成员<>()

时间:2012-10-20 17:34:31

标签: c# sql linq entity-framework

为了增加包含大量数据的页面的请求时间,我试图使用Context.Database.SqlQuery方法,而不是使用LINQ

Context.Database.SqlQuery<Inschrijving>("select * from dbo.inschrijving join dbo.duif on dbo.duif.duifid = dbo.inschrijving.duifid  where vluchtid = {0} and duivenmelker_duivenmelkerid = {1}",vluchtId, duivenmelker.DuivenmelkerId);

这有效,但在我的班级我使用虚拟成员。使用sqlquery方法时,它们为null。

我尝试过其他类型的连接,目前我正在使用一种方法来恢复具有id的虚拟对象。

具有虚拟对象的类的片段:

[Key,ForeignKey("Duif"), Column(Order = 0)]
public int DuifId { get; set; }
public virtual Duif Duif { get; set; }

如何恢复对象中的虚拟成员(以更好的方式)?

有没有办法在sqlquery中同时执行此操作?

1 个答案:

答案 0 :(得分:0)

  

如何恢复对象中的虚拟成员(以更好的方式)?

你不会。 SqlQuery只能加载顶级类而不能加载关系。您需要为要加载的每种类型执行单独的SqlQuery,而您应该使用此版本:

Context.Set<Inschrijving>().SqlQuery(....);

这将使您的实体得到跟踪。 EF将在通过单独查询加载时修复关系,或者为未加载的关系提供延迟加载。