2013-10-14 36 views
0

我有一個使用大多數數據庫實體的增量ID生成器的現有產品。新版本應該允許在同一個數據庫上工作的多個服務器實例的集羣。該產品支持使用MSSQL和Oracle數據庫。在nhibernate中更改ID生成器並遷移現有數據庫

因此,我認爲將ID生成器更改爲本機,但也存在一些問題。

  • Oracle和MSSQL將使用兩種不同的算法 - 在代碼中創建對象時它們是否透明?
  • 如何遷移現有數據庫,以及如何讓生成器不使用已在使用的ID?

在此先感謝您對此的任何見解。

回答

0

我會建議看一下hilo發電機策略。好處是它可以用於多個進程,並且您仍然保留在NHibernate中使用生成的ID的性能優勢(特別允許批量插入)。

MSSQL不允許您將列更改爲標識列 - 您需要添加一個新列,然後更新所有外鍵 - 如果您有很多表/關係,這可能非常非常亂。

通過hilo生成器策略,您可以完全避免這個問題,它只是一個配置更改並向數據庫添加一個表以存儲表的高值,並使用正確的值填充該表。

+0

感謝您的回答。爲什麼你需要一個新的專欄?你不能只是設置本地發電機開始在下一個可用的ID?但我會嘗試Hilo策略,看看它是如何工作的:) – LLdk

+0

MSSQL不允許您將列更改爲標識(MSSQL的本地生成策略) - 它必須是一個新列 –

相關問題