.Execute在类型安全的实体框架查询中不可用(包括& where)

时间:2013-08-28 06:35:08

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

我对实体框架查询有疑问。

我有一个使用EF提供的Extension方法的查询,所以我可以使用type safe includes和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();

谢谢,

1 个答案:

答案 0 :(得分: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);