NHibernate禁用批量操作的id生成器

NHibernate禁用批量操作的id生成器,nhibernate,bulkinsert,Nhibernate,Bulkinsert,我必须使用nhibernate和映射模型将数据批量导入数据库。 我为ID设置了一个guid.comb生成器。 是否有方法导入尚未分配id的数据禁用临时guid.comb id生成器?您可以临时将id生成器更改为已分配。然后,在导入完成后,将其切换回COMB guid。只需确保显式调用session.Save()而不是SaveOrUpdate()。这解决了您的问题吗?如果您要经常执行大容量导入(而不仅仅是一次性操作),您可以在构建SessionFactory之前修改内存中的配置对象,将id更改为A

我必须使用nhibernate和映射模型将数据批量导入数据库。 我为ID设置了一个guid.comb生成器。
是否有方法导入尚未分配id的数据禁用临时guid.comb id生成器?

您可以临时将id生成器更改为已分配。然后,在导入完成后,将其切换回COMB guid。只需确保显式调用session.Save()而不是SaveOrUpdate()。这解决了您的问题吗?

如果您要经常执行大容量导入(而不仅仅是一次性操作),您可以在构建SessionFactory之前修改内存中的配置对象,将id更改为Assigned。这样,您就不必维护两组hbm.xml文件。我在这篇博文中讨论了一种类似的技术(暂时使查找表可更新):嘿,詹姆斯,非常感谢,你的解决方案似乎就是这个解决方案。只有一个问题:可以为级联实体禁用“Id生成器”?谢谢。另外,我怎样才能把你的建议作为我问题的真正答案呢?thanksFilip这可能是一个更改id的好主意,但我问的是如何做到这一点,并且批量操作不建议使用标准会话,而是需要使用无状态会话来执行批量操作,原因有很多。无论如何,谢谢你。霍格威德:没有考虑你问题的“大部分”部分。是的,应该使用无状态会话处理批量操作。