1

为了提高具有大量数据的页面的请求时间,我尝试使用 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 方法中为空。

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

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

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

我怎样才能恢复对象中的虚拟成员(以更好的方式)?

有没有办法在 sqlquery 中一次完成这一切?

4

1 回答 1

0

我怎样才能恢复对象中的虚拟成员(以更好的方式)?

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

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

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

于 2012-10-21T09:55:33.920 回答