NHibernate禁用id生成器进行批量操作

Hog*_*eed 5 nhibernate bulkinsert

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

Fil*_*ada 4

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

  • 如果您要经常进行批量导入(而不仅仅是一次性操作),则可以在构建 SessionFactory 之前修改内存中的 Configuration 对象,将 id 更改为已分配。这样您就不必维护两组 hbm.xml 文件。我在这篇博文中讨论了类似的技术(用于暂时使查找表可更新):http://jameskovacs.com/2007/11/04/testing-immutable-entities-with-nhibernate/ (4认同)