您可以将手动SQL查询的结果映射到Entity Framework中的对象吗?

Dan*_*ola 4 linq asp.net-mvc entity-framework

在LINQ中,您可以编写一个手动SQL查询,从中获取结果,并使LINQ将这些结果“映射”到您的Model类的适当属性中(或者至少,我很确定我读过您可以做到这一点)。

是否可以在实体框架中执行类似的操作?

我有一个使用EF的Web应用程序,与它所拥有的流量相比,它的CPU使用率非常高,并且在我的计算机中对其进行性能分析,所有时间(可以预期)都花在了DB函数中,并且这是大部分时间(> 85%)由EF“生成” SQL并在实际执行查询之前执行操作所花费。

因此,我的理由是,我可以直接对SQL查询进行硬编码,但仍在视图中使用填充的Model属性。

这可能吗?如果是这样,我该怎么办?

谢谢!
丹尼尔

jas*_*son 5

因此,您想要做的是从中水化一个对象IDataReader?编写代码可以很容易地做到这一点(提示:反射!或者您可以花哨并使用成员初始化表达式),也可以使用Google来获取Internet上的各种现有实现。

您可以使用EF内做到这一点ObjectContext.ExecuteStoreQuery<T>或者ObjectContext.Translate<T>,如果你已经有了一个DbDataReader