【问题标题】:Compiled Query no implicit reference conversion to ObjectContext编译查询没有隐式引用转换为 ObjectContext
【发布时间】:2013-01-11 22:08:07
【问题描述】:

我正在创建一个委托来检索数据库中的所有专辑记录。我在另一个项目中使用过同样的方法,但由于某种原因,这次我遇到了错误。

我错过了一步吗?我不确定为什么会出现这个错误。

代码

        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&lt;TArg0,TResult&gt;(System.Linq.Expressions.Expression&lt;System.Func&lt;TArg0,TResult&gt;&gt;)'. 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 类型

【问题讨论】:

    标签: c# asp.net objectcontext compiled-query


    【解决方案1】:

    错误消息表明CodySolutionEntities 不是从ObjectContext 派生的,这是一个问题,因为CompiledQuery 仅适用于ObjectContext。在这种情况下,CodySolutionEntities 必须派生自 DbContext 对象,此时该对象为 the recommended context object to use

    CompiledQuery 可能在过去有效,因为 4.1 之前的实体框架版本创建了一个派生自 ObjectContext 而不是 DbContext 的对象,以便您管理您的实体。

    就像this 帖子解释的那样,如果您能够以 .NET 4.5 为目标,则可以使用 EF 5,并且您将不再需要 CompiledQuery,因为它会自动为您缓存已编译的 LINQ to Entity 查询。如果不是,您可能想考虑切换回使用ObjectContext,但在此之前,请确保您的心态不仅仅是compiled or bust

    【讨论】:

    • 那么,使用DbContext 做我想做的事情的等效方法是什么?
    • 这就是问题所在,您不能DbContextCompiledQuery 一起使用。请参阅:stackoverflow.com/a/6731102/1289454。你能坚持使用未编译的查询吗? using(var context = new CodySolutionEntities()){ var albums = context.Albums.Include(a =&gt; a.Photos); //... }
    • 回答你的问题,相当于:public static readonly Func> SelectAlbums = query => from q in query.Albums.Include("Photo") select q;但我不知道这是否比内联使用更有效。
    猜你喜欢
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    相关资源
    最近更新 更多