2010-08-25 46 views

回答

0

雖然有NHibernate的,Ayende許多身份發電機,即Mr NHibernate自己通知:反對:

我開始之前,我想解釋 是NHibernate的全力支持 身份發生器,和你可以很容易和無痛地工作 。

但是, 在您的 系統中使用身份生成器會有影響。金槍魚在 詳細說明他們做得很好。您遇到的最常見問題 是身份證 打破了工作單元的概念。 當我們使用一個身份,我們必須儘快 作爲插入的 值到數據庫中,我們得到它,而不是 推遲到以後的時間。它也 渲染配料沒用。

而且,只是將一些額外結冰 在蛋糕上。在SQL 2005和SQL 2008上, 標識被破壞。

我知道,「選擇不碎」的大部分時間 ,但這個時候,它出現 它:-)

我們強烈建議您使用其他一些 發電機的策略,如GUID。梳子 (類似於新的序列ID)或HiLo (其也產生人類可讀的 值)。

+0

即使使用其他生成器,是否可以在id字段以外的任何其他字段上使用? – adriaanp 2010-08-26 09:39:37

+0

@adriaanp你是什麼意思? – rebelliard 2010-08-26 12:19:39

+0

我正在考慮如何使用NHibernate爲實體生成Id值的邏輯,並將其應用於另一個屬性,如InvoiceNumber屬性,該屬性不是實體的Id。 – adriaanp 2010-08-26 14:23:52

0

從技術上說,是的,可以。他們都是生活在NHibernate.Id 命名空間中的公共類,因此您可以隨時實例化並使用它們中的任何一個。

但在實踐中,這取決於你想用哪一個。其中一些非常簡單,不需要任何配置或依賴項,如CounterGenerator,GuidCombGeneratorUUIDStringGenerator。其他人需要會議,如NativeGuidGenerator。其他需要配置之前,他們可以使用,如SequenceHiLoGenerator

我不認爲使用比在IDS和idbags其他發電機NHibernate的支持,因此使用起來完全取決於你。

相關問題