Entity Framework Context の基本的な crud メソッドを定義する RepositoryBase クラスがあります。All() メソッドの次の 2 つのオーバーロードがあります。
public virtual IQueryable<T> All<TKey>(Expression<Func<T, bool>> predicate)
{
return All().Where(predicate);
}
public virtual PagedResult<T> All<TKey>(int startRowIndex, int maximumRows,
Expression<Func<T, TKey>> orderingKey, Expression<Func<T, bool>> predicate,
bool sortDescending = false)
{
var subset = All().Where(predicate);
IEnumerable<T> result = sortDescending
? subset.OrderByDescending(orderingKey).Skip(startRowIndex).Take(maximumRows)
: subset.OrderBy(orderingKey).Skip(startRowIndex).Take(maximumRows);
//More code ommited
}
最初の方法では常にエンティティ タイプを明示的に指定する必要がありますが、2 番目の方法では必要ありません。どうしてこれなの?
例、これはコンパイルされません:
return All(s => s.LoanApplicationId == loanApplicationId)
代わりに、次のように呼び出す必要があります。
return All<LoanApplication>(s => s.LoanApplicationId == loanApplicationId)
しかし、これはコンパイルします:
return All(0,10, s => s.Name, s => s.LoanApplicationId == loanApplicationId, false)