编译查询没有隐式引用转换为ObjectContext
我正在创建一个委托来检索数据库中的所有专辑记录。 我在另一个项目中使用了相同的方法,但由于某种原因我这次收到错误。
我错过了一步吗? 我不确定为什么会出现这个错误。
码
public static readonly Func<CodySolutionEntities, IQueryable> SelectAlbums = CompiledQuery.Compile<CodySolutionEntities, IQueryable>( query => from q in query.Albums.Include("Photo") select q);
错误
错误1类型’CodyData.Diagram.CodySolutionEntities’不能parameter 'TArg0' in the generic type or method 'System.Data.Objects.CompiledQuery.Compile(System.Linq.Expressions.Expression<System.Func>)'. There is no implicit reference conversion from 'CodyData.Diagram.CodySolutionEntities' to 'System.Data.Objects.ObjectContext'. C:\Users\Cody\Documents\CMBS\CodySolution\CodyData\Delegates\PhotoDelegates.cs 13 13 CodyData
用作类型parameter 'TArg0' in the generic type or method 'System.Data.Objects.CompiledQuery.Compile(System.Linq.Expressions.Expression<System.Func>)'. There is no implicit reference conversion from 'CodyData.Diagram.CodySolutionEntities' to 'System.Data.Objects.ObjectContext'. C:\Users\Cody\Documents\CMBS\CodySolution\CodyData\Delegates\PhotoDelegates.cs 13 13 CodyData
parameter 'TArg0' in the generic type or method 'System.Data.Objects.CompiledQuery.Compile(System.Linq.Expressions.Expression<System.Func>)'. There is no implicit reference conversion from 'CodyData.Diagram.CodySolutionEntities' to 'System.Data.Objects.ObjectContext'. C:\Users\Cody\Documents\CMBS\CodySolution\CodyData\Delegates\PhotoDelegates.cs 13 13 CodyData
错误消息指示CodySolutionEntities
不是从ObjectContext
派生的,这是一个问题,因为CompiledQuery
仅适用于ObjectContext
。 在这种情况下, CodySolutionEntities
必须从DbContext
对象派生,该对象目前是推荐使用的上下文对象 。
CompiledQuery
过去可能DbContext
,因为4.1之前的Entity Framework版本创建了一个派生自ObjectContext
而不是DbContext
的对象,供您管理实体。
就像这篇文章解释的那样,如果你能够使用.NET 4.5,那么你可以使用EF 5,而不再需要CompiledQuery
,因为它会自动为你编译LINQ to Entity查询。 如果不是,您可能希望切换回使用ObjectContext
,但在此之前确保您的思维模式不是简单编译或破坏 。