我有一個使用自然鍵(即面向業務的鍵)的數據庫。不幸的是,正因爲如此,這些對象的主鍵可能隨時間而改變。是否可以使用NHibernate更新/更改主鍵?
我目前正在研究使用NHibernate作爲這個數據庫的O/RM。但是,在我的測試中,我注意到沒有明顯的方法來更改對象的主鍵並將其保存到數據庫。
例如,說我有一個「商業」的對象以「BusinessCode」,因爲它的主鍵:
public class Business
{
public string BusinessCode { get; set; }
public string Name { get; set; }
...
}
如果我做一個獲取,更改主鍵,並嘗試保存回使用NHibernate的數據庫,我要麼收到異常或意外的結果(取決於如果我使用保存(),更新(),或SaveOrUpdateCopy())
Business b = session.Get<Business>("BusinessCode1");
b.BusinessCode = "BusinessCode22";
session.Update(b);
所以有這樣的可能嗎?
據我所知,許多NHibernate的人推薦使用不改變主鍵(即身份)。但我有一些使用自然鍵的數據庫。謝謝。
太顯而易見了...... +1 :) – 2011-11-03 12:12:34