我有这些帮助方法:
public static IQueryableAll (this IUnitOfWork unitOfWork) where T : class { return unitOfWork.Context.Set (); } public static T Find (this IUnitOfWork unitOfWork, Func predicate) where T : class { return unitOfWork.All ().FirstOrDefault(predicate); }
当我打电话给第二个这样的时候:
var payment = _unitOfWork.Find(p => p.PaymentAttemptRef == paymentAttemptRef && p.ContactType == type);
我希望谓词成为查询的一部分!! 但问题是生成的选择是没有where子句并且拉回表中的所有行.
知道为什么会这样吗?第二种方法调用第一种方法,返回一个iqueryable,所以我认为不会这样做?
您需要更改扩展方法以Expression
使其可以转换为SQL.