【问题标题】:.Execute not available on a type safe Entity Framework query (Include & where).Execute 在类型安全的实体框架查询中不可用(包括 & where)
【发布时间】:2026-02-17 21:55:03
【问题描述】:

我有一个关于实体框架查询的问题。

我有一个使用 EF 提供的扩展方法的查询,所以我可以使用类型安全包含和 where 子句。但是由于 Include 带有一个 lambda 参数,它是 IQueryable 上的一个扩展方法,它返回一个 IQueryable 以便链接诸如 Where 之类的方法。包含字符串参数是 ObjectQuery 上的一个方法,它返回一个 ObjectQuery。 Execute 是 ObjectQuery 上的一种方法,而不是 IQueryable,因此在使用 IQueryable 方法时它不可用。

有没有办法调用 .Execute 但使用 IQueryable?

    return
    this.Storage.Customer.OfType<Preferred>()
    .Include(b  => b.Order)
    .Where(cust => cust.Id == customerId && cust.CustomerType== (int)cusType)
    .SingleOrDefault();

谢谢,

【问题讨论】:

  • 你想做什么?
  • 我想使用合并选项调用 .Execute,但是当您在 where 中使用 lambda 并包含使用扩展方法时,这不可用。仅当您将字符串用于包含和位置时才可用...

标签: c# .net entity-framework entity-framework-4.1 entity-framework-5


【解决方案1】:

我找到了,也许有人可以评论这是否是好的做法?

        var query =             
            this.Storage.Tubes.OfType<Preferred>()
                        .Include(b  => b.Order);

        return ((ObjectQuery<Preferred>)query).Execute(MergeOption.OverwriteChanges)
                                               .SingleOrDefault(cust => cust.Id == customerId && cust.CustomerType == (int)cusType);

【讨论】: