gpt4 book ai didi

c# - 编译查询没有隐式引用转换为 ObjectContext

转载 作者:太空狗 更新时间:2023-10-29 18:15:03 26 4
gpt4 key购买 nike

我正在创建一个委托(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com