编写编译的LINQ查询时出错

编写编译的LINQ查询时出错,linq,entity-framework,Linq,Entity Framework,我尝试编写编译后的查询,如下所示: public static Func<MyDBEntities, string, List<Client>> getCustomers = CompiledQuery.Compile( (MyDBEntities ctx, string strCustCode) => from objCustomer in ctx.Clients select objCustomer); public static Func getC

我尝试编写编译后的查询,如下所示:

public static Func<MyDBEntities, string, List<Client>> getCustomers =
CompiledQuery.Compile(
(MyDBEntities ctx, string strCustCode) => from objCustomer in ctx.Clients
     select objCustomer);
public static Func getCustomers=
CompiledQuery.Compile(
(MyDBEntities ctx,string strucstCode)=>来自ctx.Clients中的objCustomer
选择对象(客户);
并获取以下错误消息:

创建表示符合LINQ to实体查询的新委托

错误:

没有从MyDBEntities到System.Data.Objects.ObjectsContext的隐式引用转换

我在这个项目中使用DbContext


不明白遗漏了什么。

在使用DbContext API时,无法使用CompiledQuery;CompiledQuery仅适用于ObjectContext。如果您首先使用代码,则最有可能使用的是DbContext API。Microsoft建议您在新项目中使用DbContext API,即使您使用的是数据库优先或模型优先的模型

但是如果您使用EF5,它会带来自动编译的查询,这与CompiledQuery的工作方式非常不同。EF5不是编写代码来编译每个查询,然后根据需要调用每个查询,而是将生成的SQL缓存为后台进程,然后在执行任何查询时在缓存中搜索已编译的查询

见:

摘自: