我尝试编写编译查询,如下所示:
public static Func<MyDBEntities, string, List<Client>> getCustomers =
CompiledQuery.Compile(
(MyDBEntities ctx, string strCustCode) => from objCustomer in ctx.Clients
select objCustomer);
并收到以下错误消息:
创建一个代表符合LINQ to Entity查询的新委托
错误:
没有从MyDBEntities到System.Data.Objects.ObjectsContext的隐式引用转换
我在这个项目中使用DbContext。
没有理解错过了什么。
答案 0 :(得分:1)
当您使用DbContext API时,无法使用CompiledQuery; CompiledQuery仅适用于ObjectContext。如果您使用的是Code First,则最有可能使用DbContext API。 Microsoft建议您在新项目中使用DbContext API,即使您正在使用Database First或Model First模型。
但是如果你使用EF5,它会带来自动编译的查询,它与CompiledQuery的工作方式完全不同。 EF5不是编写代码来编译每个查询,然后根据需要调用每个查询,而是将生成的SQL作为后台进程缓存,然后在执行任何查询时在缓存中搜索已编译的查询。
请参阅:
和
http://www.devproconnections.com/article/entity-framework/entity-framework-5-143875