2011-02-23 20 views
0

現在我把所有的映射都作爲hbm.xml。我想在運行時(應用程序啓動)將某些實​​體的Id生成器的類型從「標識」動態切換到「分配」。NHibernate - 如何動態切換ID生成器?

這是因爲我需要支持從以前的系統導入數據並保留現有的ID。

這可能嗎?怎麼樣?

回答

2

生成器是映射的一部分,因此您需要在創建會話工廠之前更改映射。

這對使用Fluent或者ConfORM很容易。在將它們提供給配置之前,可以更改XML映射,但這很麻煩。

只需檢查配置標誌(在啓動應用程序時您將更改),然後調用相應的生成器。

1

目前尚不清楚爲什麼你需要保留現有的ID。我認爲你不應該需要保留現有的ID。也許你需要保持替代ID的呢?

如果以前的系統有它自己的數據庫,則: 1)需要對其他表另一個映射在其他數據庫 2)中的數據複製到現有的數據庫(與主要標識)

哪意味着您無論如何都需要新ID。 示例:假設您想複製'airlines'表,並且以前的系統使用'airline-code'作爲主鍵。您可以在您的新數據庫中使用一個整數作爲主鍵,將航空公司代碼作爲備用密鑰。

+0

很簡單。其他系統使用時會保存這些ID並在從我的數據中獲取數據時使用它們。 – IamDeveloper 2011-02-23 10:59:02

+0

好的,清楚。那麼迭戈的回答很好。您當然可以擁有多個會話參數,因此您可以使用不同的配置。祝你好運 :) – Hace 2011-02-23 20:04:29