現在の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; }
}
我々は今、Addressオブジェクトと人に対する子どものオブジェクトのリストを格納する「ボンネットの下に」すべてのデータの検索の世話をすることを期待。これは、クラスにアクセスする際にすべての情報を持っているため、私たちのビジネスニーズに適しています。IDを使用するのではなく、基礎となるオブジェクトを使用することから離れることができます。
このシナリオでは、nHibernateはPerson.Addressに対して何を保持しますか?それは、Personテーブル内のそのオブジェクトにノミネートされた一意のIDだけを保持しますか? ChildrenObjectはどうですか?