0

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

我有一个使用 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();

谢谢,

4

1 回答 1

0

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

        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);
于 2013-08-28T08:02:20.053 回答