- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在创建一个委托(delegate)来检索数据库中的所有专辑记录。我在另一个项目中使用了同样的方法,但由于某种原因,这次我遇到了错误。
我错过了一步吗?我不确定为什么会出现此错误。
代码
public static readonly Func<CodySolutionEntities, IQueryable<Album>> SelectAlbums =
CompiledQuery.Compile<CodySolutionEntities, IQueryable<Album>>(
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<TArg0,TResult>(System.Linq.Expressions.Expression<System.Func<TArg0,TResult>>)'. 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
仅适用于 对象上下文
。在这种情况下,CodySolutionEntities
必须派生自 DbContext
对象,此时,它是 the recommended context object to use .
CompiledQuery
可能在过去有效,因为 4.1 之前的 Entity Framework 版本为您创建了一个从 ObjectContext
而不是 DbContext
派生的对象管理您的实体。
赞this帖子解释说,如果您能够以 .NET 4.5 为目标,则可以使用 EF 5,并且您将不再需要 CompiledQuery
,因为它会自动为您缓存已编译的 LINQ to Entity 查询。如果不是,您可能想考虑切换回使用 ObjectContext
,但在这样做之前确保您的心态不只是 compiled or bust .
关于c# - 编译查询没有隐式引用转换为 ObjectContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14287458/
我是一名优秀的程序员,十分优秀!