0
我試圖找到與NHibernate運行多個(> 1000)插入語句的最有效的方式。我怎樣才能一次運行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時間框架中增加了支持。 (我在最後一個項目中使用了它)。警告一句話...... NH 2.X中的Oracle提供程序不會生成正確的更新批量記錄消息。如果您查看日誌(或正在使用NHProf),看起來批處理不起作用,最後一次更新會執行兩次。實際上它正在工作並且日誌消息是錯誤的。這已在NH3中得到修復。 – 2010-11-12 18:17:11
感謝您的回答。 – jose 2010-11-15 14:50:57