Если бы я выбрал несколько строк на основе определенных критериев, я мог бы использовать ICriterion
объект в NHibernate.Criterion
, например:
public List<T> GetByCriteria()
{
SimpleExpression newJobCriterion =
NHibernate.Criterion.Expression.Eq("LkpStatu", statusObject);
ICriteria criteria = Session.GetISession().CreateCriteria(typeof(T)).SetMaxResults(maxResults);
criteria.Add(newJobCriterion );
return criteria.List<T>();
}
Или я могу использовать предложение LINQ для фильтрации того, что я хочу:
public List<T> GetByCriteria_LINQ()
{
ICriteria criteria = Session.GetISession().CreateCriteria(typeof(T)).SetMaxResults(maxResults);
return criteria.Where(item=>item.LkpStatu=statusObject).ToList();
}
Я бы предпочел второй, конечно. Потому что
- Это дает мне сильный набор
- Мне не нужно изучать еще один другой синтаксис в форме NHibernate
Вопрос в том, есть ли какое-либо преимущество в производительности по сравнению с первым? Из того, что я знаю, первый будет создавать запросы SQL, поэтому он будет фильтровать данные перед передачей в память. Достаточно ли велика экономия такого рода производительности, чтобы оправдать ее использование?