NHibernate 2.1.0.4000不';我似乎不喜欢批量插入

NHibernate 2.1.0.4000不';我似乎不喜欢批量插入,nhibernate,batch-file,insert,Nhibernate,Batch File,Insert,我正在其中一个项目中使用NHibernate 2.1.0.4000。我在cfg文件中将adonet.batch_size设置为100,但是我仍然看到insert语句被视为单个语句。更新似乎工作正常。发生什么事了 更新: 是因为我选择了identity作为主键生成器吗 <id name="Id" column="Id" unsaved-value="0" type="Int32"> <generator class ="identity"></generator&

我正在其中一个项目中使用NHibernate 2.1.0.4000。我在cfg文件中将adonet.batch_size设置为100,但是我仍然看到insert语句被视为单个语句。更新似乎工作正常。发生什么事了

更新: 是因为我选择了identity作为主键生成器吗

<id name="Id" column="Id" unsaved-value="0" type="Int32">
  <generator class ="identity"></generator>
</id>

我不知道该特定NHibernate版本有任何问题

您是否使用
native
作为实体的ID生成器?因为这将强制每个插入单独进行,所以选择返回生成的ID。这是因为数据库需要生成每个ID。这也解释了为什么批处理似乎可以在更新上工作

如果可能,您应该切换到例如
hilo
策略,或者如果您不关心(容易)读取的ID,甚至可以切换到
guid


法比奥有一篇关于这个话题的有趣帖子。

我找到了这个()但不确定它的意思。:第13章。批处理:“请注意,如果使用identity标识符生成器,NHibernate将在ADO级别透明地禁用插入批处理。”是的,我使用SQL Server 2005 identity(生成的int)作为主键。这就解释了原因。谢谢。我正在使用现有的数据库,所以不太可能更改id。身份生成器解释道