Я пытаюсь найти наиболее эффективный способ запуска нескольких (> 1000) вставных операторов с помощью NHibernate.Как я могу запустить несколько вложений с помощью NHibernate за один раз?
Фактический оператор вставки очень прост, так как он использует FK ID из вновь созданного объекта вместе со значениями из подзапроса. Вот что я хотел бы написать в SQL:
insert into dbo.NotificationView
select
1 AS IDOfNewItem,
U.Id AS UserID,
0 AS HasEdited
from
[User] U
INNER JOIN UserSite US ON U.Id = US.UserId
where
US.SiteId = 1
Я видел, что есть параметр называется adonet.batch_size
(NHibernate: insert multiple items at once), которые могут быть установлены в файле XML «зимуют-конфигурацию», но это, кажется, что это будет просто создать то же количество insert
утверждений, поскольку есть объекты.
Есть ли способ запустить вставку за один раз, без повторения каждого элемента?
Если да, то это отрицательно влияет на кеш?
adonet.batch_size работает с Oracle. Я считаю, что поддержка добавлена в 2.X таймфрейме. (Я использовал его в своем последнем проекте.) Одно слово предупреждения ... Поставщик Oracle в NH 2.X не создает правильные сообщения о протоколировании пакетов обновлений. Если вы смотрите в журналах (или используете NHProf), похоже, что пакетная обработка не работает, а последнее обновление выполняется дважды. В действительности он работает, а сообщения журнала ошибочны. Это было зафиксировано в NH3. –
Спасибо за ответ. – jose