为什么 nhibernate 不允许在具有身份标识符的无状态会话期间进行批量插入?

Why nhibernate doesn't allow to make batch insert during stateless session with identity identifier?

我正在尝试使用 NHibernate 中的批处理从我的代码中优化数据库调用。我正在处理一个单独发送超过 1000 个查询的过程(我想对此进行优化)。

NHibernate 版本为 4。

我使用身份类型作为生成 ID 的核心问题。

我尝试同时使用会话和无状态会话。

我什至想对标识列映射使用批插入。如果我使用无状态会话,它不会在我的插入中收集缓存,我不明白为什么我不允许我对查询进行批处理。

这可能吗?

P.S。我不想使用 SQLBulkCopy。我的选项仅限于 Nhiberante 功能。

Is that is possible?

如果键列是标识,则 NHibernate 不支持批处理。这是因为,NHibernate 必须执行 INSERT 语句并取回生成的(由 RDBMS)标识。这在批处理的情况下是不可能的。

Note that NHibernate disables insert batching at the ADO level transparently if you use an identity identifier generator.
Source

I don't want to use SQLBulkCopy. My options are limited to Nhiberante features.

SQL Bulk Copy 是绕过 NHibernate 的常用替代方案;考虑一下。