我們正在遷移當前的C#應用程序以使用nHibernate。由於nHibernate提倡純粹的域驅動設計,我們可以添加業務對象作爲類的屬性,或者應該繼續使用ID。nHibernate - 類中的對象或ObjectID
讓我用一個例子來說明這一點;
採取以下現有的類。地址(和孩子)僅通過他們的ID標識。
public class Person
{
public int PersonID { get; set; }
public string FirstName { get; set; }
public string FirstName { get; set; }
public int AddressID { get; set; }
public List<int> ChildrenIDs { get; set; }
}
當我們轉換類使用NHibernate的,我們也想借此改變「人」類的結構,以更好地滿足了需求的機會。希望NHibernate的將採取
public class Person
{
public virtual int PersonID { get; private set; }
public virtual string FirstName { get; set; }
public virtual string FirstName { get; set; }
public virtual AddressObject Address { get; set; }
public virtual List<ChildrenObject> Children { get; set; }
}
我們現在存儲地址對象,反對的人兒對象的名單「引擎蓋下」所有的數據檢索服務。這對我們的業務需求來說更好,因爲我們在訪問類時擁有所有信息,並且我們可以從使用ID的方法移開,而使用基礎對象。
在這種情況下,nHibernate將持續Person.Address?它是否只會保留在Person表中爲該對象提名的唯一ID?那麼ChildrenObject呢?