Влияет ли вызов функции в предложении Where (...) запроса Linq to Nhibernate на производительность? - PullRequest
2 голосов
/ 18 ноября 2009

Я использую 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 ]

0 голосов
/ 18 ноября 2009

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

0 голосов
/ 18 ноября 2009

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

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