【问题标题】:Compiled Query return type not implicitly convertible编译查询返回类型不可隐式转换
【发布时间】:2012-07-09 15:00:07
【问题描述】:

我为我的代码优先实体模型编写了以下编译查询。但是,我需要帮助才能正确编译。下面是我的类的代码,然后是我编写的用于查询 BudgetContext 对象以获取此信息的编译查询

[DataContract]
public class BudgetSummary : IBudgetSummary, IEntity
{
    public int Id{ get()}
    public int MDACode{ get; set; }

    public DateTime BudgetYear{ get; set; }

    public virtual IList<IBudgetItem> budgetitems{ get; set; }

}

public class BudgetContext : DbContext
{ 
    public DbSet<Post> Posts { get; set; }
    public DbSet<Comment> Comments { get; set; }
    public DbSet<BudgetItem> BudgetItems { get; set; }
    public DbSet<BudgetLineItem> BudgetLineItems { get; set; }
    public DbSet<IBudgetSummary> BudgetSummaries { get; set; }
    public DbSet<MDA> MDAs { get; set; }

}



    static readonly Func<BudgetContext, int, IQueryable<BudgetSummary>> FindBudgetSummaryCompiledQuery =
CompiledQuery.Compile<BudgetContext,int, IQueryable<BudgetSummary>>(
        (ctx, mdaID) => from budgetsummary in ctx.BudgetSummaries
                        where budgetsummary.MDACode >= mdaID
                        select budgetsummary);

无法将 lambda 表达式转换为委托类型“System.Func>”,因为块中的某些返回类型不能隐式转换为委托返回类型

【问题讨论】:

  • 不知情的猜测:您在 lambda 中突出显示的语法看起来很奇怪(“where”没有作为关键字突出显示。)您是否在顶部使用了 System.Linq?
  • @jlew 语法高亮由 SO 完成
  • 哦,真的。有趣的是,它的“来自”和“选择”是正确的。

标签: c# entity-framework lambda


【解决方案1】:

我找到了答案。

根据链接http://blogs.msdn.com/b/adonet/archive/2011/03/02/ef-4-1-is-coming-dbcontext-api-amp-code-first-rtw.aspx

1) DbContext 不支持编译查询 不幸的是,由于我们在 .NET Framework 4.0 中提供的编译查询功能存在一些技术限制,我们无法通过 DbContext API 支持编译查询。我们意识到这是一个痛苦的限制,并将努力在下一个版本中启用此功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 2023-03-10
    • 2019-08-20
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    相关资源
    最近更新 更多