当我输入以下代码时收到此错误:
var rec = (bNoTracking ? tblOrders.AsNoTracking() : tblOrders);
...
...
...
//error on next line: Cannot implicitly convert type 'System.Linq.IQueryable<LocalDB.tblOrder>' to 'System.Data.Entity.Infrastructure.DbQuery<LocalDB.tblOrder>'. An explicit conversion exists (are you missing a cast?)
rec = rec.Where(x => (x.WarehouseId == iWarehouseId) && (x.OrderId == iOrderId));
知道怎么解决吗?
谢谢:)
答案 0 :(得分:2)
rec
变量隐式输入为DbQuery<tblOrder>
个对象(因为tblOrders
是DbQuery<tblOrder>
个对象,DbQuery<T>.AsNoTracking
返回相同类型的对象)。
因此,您的var
声明对于编译器来说就是这样:
DbQuery<tblOrder> rec = (bNoTracking ? tblOrders.AsNoTracking() : tblOrders);
但是,Where
仅定义为返回IQueryable<T>
对象,该对象不一定适合作为DbQuery<tblOrder>
对象。
应该可以通过明确键入rec
变量来避免这些问题:
IQueryable<tblOrder> rec = (bNoTracking ? tblOrders.AsNoTracking() : tblOrders);