什麼是實現人類可讀數字的最佳方式,nhibernate中人類可讀id的最佳策略
當前將Identity設置爲代理鍵。
一直在考慮身份種子,但這會導致差距。
如果我要在事務範圍內生成,那麼併發會產生效果嗎?
寧願避免DBCC CHECKIDENT觸發器。
謝謝。
什麼是實現人類可讀數字的最佳方式,nhibernate中人類可讀id的最佳策略
當前將Identity設置爲代理鍵。
一直在考慮身份種子,但這會導致差距。
如果我要在事務範圍內生成,那麼併發會產生效果嗎?
寧願避免DBCC CHECKIDENT觸發器。
謝謝。
如果你有
那麼你需要自己實施。
我很可能會寫一個id-Generator來創建獨特的順序id。這必須使用自己的會話來將最新的ID存儲在數據庫中。如果你只有一個進程,那麼你可以在內存中創建它們。
基本上,存在用於NHibernate的兩條最優id生成策略:guid.comb
和hilo/seqhilo
(後者是適用於支持序列RDBMS)
hilo
生成積分的ID其比的GUID的可讀性,所以這將是您的在這種情況下的選擇。
不要擔心差距;他們並不重要。
代理鑰匙通過guid.comb生成, 問題是人類可讀的ID,即對於客戶參考(採購訂單號),間隔會導致不連續的訂單號,從客戶角度來看這通常不是好主意。 將會看到hilo – kalki 2010-04-27 07:44:22
那麼,這是新的信息(對*順序* id的要求)。在這種情況下,您最好使用** trigger-identity **並使用觸發器生成值。 – 2010-04-27 10:49:57
好吧,我傾向於這種方法,是否有建議它自己的會話的特殊原因? – kalki 2010-04-27 14:34:36
@kalki:肯定有一個原因。許多會話可以同時訪問這個id-Generator。它必須獨立於這些會話更新(並提交)數據庫。它需要自己的隔離。 – 2010-04-27 15:14:31