2011-02-25 67 views
5

我必須使用nhibernate和我的映射模型批量導入數據到我的數據庫。 我爲ID設置了一個guid.comb生成器。 有沒有辦法導入尚未分配ID的數據禁用臨時guid.comb ID生成器?NHibernate禁用批量操作的ID生成器

回答

4

您可以暫時更改要分配的ID生成器。然後,導入完成後,將其切換回COMB Guids。只要確保顯式調用session.Save()而不是SaveOrUpdate()。這能解決你的問題嗎?

+4

如果您要經常進行批量導入(而不僅僅是一次性操作),則可以在構建SessionFactory之前修改內存中的Configuration對象以將ID更改爲Assigned。這樣你就不必維護兩套hbm.xml文件。我在本博客文章中討論了一種類似的技術(用於暫時使查找表可更新):http://jameskovacs.com/2007/11/04/testing-immutable-entities-with-nhibernate/ – 2011-02-25 21:21:51

+0

嘿詹姆斯非常感謝,您的解決方案似乎是解決方案。只有一個問題:「Id generator」禁用可以用於級聯實體嗎?非常感謝。附:我怎樣才能將你的建議作爲我問題的真正答案?謝謝 – Hoghweed 2011-02-25 23:38:31

+0

菲利普這可能是一個好主意來改變id,但我問的是如何做到這一點,並不建議批量操作使用標準會話,而是需要使用無狀態會話進行批量操作出於很多原因。無論如何謝謝 – Hoghweed 2011-02-25 23:42:04