C# .NET4.0和EF6的编译查询替换
我有一个用C# .NET4.0和EF6的编译查询替换,c#,asp.net,asp.net-mvc,entity-framework,compiled-query,C#,Asp.net,Asp.net Mvc,Entity Framework,Compiled Query,我有一个用.NET4.0和EF6构建的Asp.NETMVC应用程序。为了提高应用程序的性能,我遇到了各种帖子,并了解到我们必须编译查询以大幅提高应用程序的性能 因此,我继续搜索编译查询,并编写了我自己的查询,如下所示: public static Func<KEEntities, IQueryable<tblProperty>> GetProperties = CompiledQuery.Compile((KEEntities db) =>
.NET4.0
和EF6
构建的Asp.NETMVC
应用程序。为了提高应用程序的性能,我遇到了各种帖子,并了解到我们必须编译查询以大幅提高应用程序的性能
因此,我继续搜索编译查询
,并编写了我自己的查询,如下所示:
public static Func<KEEntities, IQueryable<tblProperty>> GetProperties =
CompiledQuery.Compile((KEEntities db) =>
from property in db.tblProperties select property);
public static Func GetProperties=
CompiledQuery.Compile((KEEntities db)=>
从db.tblProperties中的属性选择属性);
但是上面的查询给了我一个错误,即error没有从“KEApplication.Models.EntityModel.KEEntities”到“System.Data.Entity.Core.Objects.ObjectContext”的隐式引用转换。
在阅读了几篇文章,尤其是之后,通过阅读那里的,我很失望地发现
编译查询在.net4
和EF6
中不受支持。我还读到EF
version>4提供了查询的自动编译,但在我的例子中,我没有看到任何改进,如果它发生在我身上的话。对于上述配置,是否有其他可能的方法来实现功能,如编译查询
?您是否确实确保性能命中是由未编译的查询引起的?我很难相信这与实际数据库查询所需的时间相比会有任何严重的差异。我没有进行深入检查。我刚刚用ReSharper
优化了我的整个应用程序代码,现在唯一剩下的就是查询优化。最重要的是,我现在使用LINQPad
工具来测试查询的性能。如果您不能编译它们,您将如何比较编译版本和非编译版本的性能?除此之外,我打赌你最好把时间花在优化查询本身上(确保所有索引都在适当的位置,确保查询计划合理等等):是的!做得很好……)唯一的问题是如何获得差异,但在此之前,我需要知道如何检查差异,或者如何确保我的查询运行得非常快:)您可能还想阅读本文: