Это делается с помощью Fluent NHibernate
У меня есть поиск NHibernate, который извлекает данные из одной таблицы. Если я возьму сгенерированный sql и запустю его через анализатор запросов, для запуска потребуется ~ 18 мс.
Используя NHProfiler, я получаю длительность этого запроса как ~ 1800 мс - в 100 раз больше, чем sql!
Query duration
- Database only:1800ms
- Total: 1806ms
Заполняемый объект содержит дочерний класс, но этот дочерний объект загружается из кэша 2-го уровня NHibernate
Возвращаемые данные разбиты на страницы (50 на запрос), хотя, насколько я могу судить, это не должно иметь никакого значения
У меня также запущен подсчет, и опять же, это занимает ~ 4 мс в анализаторе запросов и ~ 1800 мс согласно NHProfiler.
Отображает ли NH Profiler время выполнения запроса или полное время получения, сопоставления классов и построения графа объектов? И если это первое - почему это занимает намного больше времени, чем прямой запрос?
РЕДАКТИРОВАТЬ: Только что нашел этот пост Ayende о значении длительности запроса, заданное в NH Profiler: http://ayende.com/Blog/archive/2009/06/28/nh-prof-query-duration.aspx - так что это определенно запрос базы данных, который занимает много времени