我对下面的FindBy和FindByExp函数的底层机制感到有些困惑。我知道FindyByExp将在数据库端执行谓词。但是FindBy函数怎么样?它是否从数据库获取所有对象并首先将它们加载到内存中,然后执行谓词?
public IQueryable<T> FindBy(Func<T, bool> predicate)
{
return context.Get<T>().Where(predicate).AsQueryable<T>();
}
public IQueryable<T> FindByExp(Expression<Func<T, bool>> predicate)
{
return context.Get<T>().Where(predicate).AsQueryable<T>();
}
答案 0 :(得分:5)
FindBy
将从数据库中获取所有 T
个对象,并在枚举结果时将其过滤到程序的内存中。
FindByExp
将更改在数据库服务器上执行的查询并添加where子句。