我正在研究 API 如下所示的存储库模式:
var visitor = repository.Find(x => x.EmailAddress == credentials.EmailAddress &&
x.Password == credentials.Password);
其中visitor是一个域对象,x代表这个域对象。存储库上 Find 方法的方法签名是:
T Find(Func<T, bool> query);
这一切都很棒,直到我尝试将它与 Linq2Sql 一起使用,因为 linq2sql 创建了自己的对象,因此当我想调用时:
context.visitors.FirstOrDefault(query);
存在类型不匹配,因为 linq2sql 需要它创建的类型的函数,而不是我传入的函数。