Я использую NHibernate для ORM и объединил загрузку множества сущностей в один большой запрос.
Я загружаю словарь слов, около 500 тыс. Записей, и каждое слово относится к другим. Запуск процесса загрузки в фоновом режиме может быть очень сложным в нашем приложении, так как нам придется вручную загружать запись, которая не была загружена вовремя, поскольку любое слово может быть запрошено в любое время. Наши единственные требования - чтобы все данные загружались как можно быстрее.
Я также попытался использовать сеанс без сохранения состояния, но получил исключение, что сеансы без сохранения состояния не могут извлекать коллекции (по какой-то причине, возможно, это связано с тем, что для сеансов без сохранения состояния не существует кэша?)
Проблема в том, что, хотя запрос занимает в SQLServer не более 25 секунд, для ICriteria.List () это занимает более 3 минут.
Я использовал NHProf для профилирования процесса загрузки и обнаружил, что создание сущностей является дорогостоящим делом, которое занимает большую часть времени загрузки в NHibernate.
Могу ли я что-нибудь сделать, чтобы уменьшить эту задержку? Это дорогое выделение памяти или «заполнение» данных?
Спасибо!