Влияет ли вызов функции в предложении Where(...) запроса Linq to Nhibernate на производительность?

Я использую linq для nhibernate и функцию IQueryable.Where в приложении, которое я создаю. И что меня удивляет, так это как Expressions Я создаю и передаю функции Where из INhibernateQueryable, влияющей на производительность.

Я не совсем уверен, каких ошибок я должен избегать при написании этих выражений запросов, с точки зрения производительности. Если я передам выражение с вызовом функции, например:

CurrentSession.Linq<ENTITY>().Where(x => x.IsBuyOrder && CheckVariousProperties(x))

Будет ли собирать каждую запись where IsBuyOrder = true а затем вызвать функцию CheckVariousProperties на них как только отложенное выполнение больше не будет отложено?

Как вызовы функций влияют на производительность LinqToNhibernate?

Каких вещей следует избегать в выражении запроса LINQ to Nhibernate?

2 ответа

Я бы исключил CheckVariousProperties(x) из части запроса и примените его к возвращенному результату запроса.

var myresult= [object].Where(x => x.IsUBuyOrder);
var checkedResult = myresult.Where(x => CheckVariousProperties(x));

Лучше всего профилировать приложение с помощью NHibernate Profiler. Это поможет вам определить ваши самые большие узкие места.

Другие вопросы по тегам