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