我对实体框架查询有疑问。
我有一个使用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();
谢谢,
答案 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);