Влияет ли вызов функции в предложении Where(...) запроса Linq to Nhibernate на производительность?
Я использую linq для nhibernate и функцию IQueryable.Where в приложении, которое я создаю. И что меня удивляет, так это как Expression
s Я создаю и передаю функции 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. Это поможет вам определить ваши самые большие узкие места.