基本的な質問: Fluent NHibernate で双方向の 1 対多のマップを作成するにはどうすればよいですか?
詳細:
多くの子を持つ親オブジェクトがあります。私の場合、子に親がないと意味がないので、データベースでは親への外部キーに NOT NULL 制約を持たせたいと考えています。Fluent NHibernate マッピングからデータベースを自動生成しています。
次のような多くの子オブジェクトを持つ親があります。
public class Summary
{
public int id {get; protected set;}
public IList<Detail> Details {get; protected set;}
}
public class Detail
{
public int id {get; protected set;}
public string ItemName {get; set;}
/* public Summary Owner {get; protected set;} */ //I think this might be needed for bidirectional mapping?
}
これが私が始めたマッピングです:
public class SummaryMap : ClassMap<Summary>
{
public SummaryMap()
{
Id(x => x.ID);
HasMany<Detail>(x => x.Details);
}
}
public class DetailMap : ClassMap<Detail>
{
public DetailMap()
{
Id(x => x.ID);
Map(x => x.ItemName).CanNotBeNull();
}
}
Detail テーブルでは、Summary_id を Not Null にする必要があります。これは、私の場合、Detail オブジェクトがサマリー オブジェクトにアタッチされていないことは意味がないためです。ただし、HasMany() マップを使用するだけでは、Summary_id 外部キーは null 可能のままになります。
NHibernate のドキュメント ( http://www.hibernate.org/hib_docs/nhibernate/html/collections.html ) で、「親が必要な場合は、双方向の 1 対多の関連付けを使用する」ことがわかりました。
では、Fluent NHibernate で双方向の 1 対多マップを作成するにはどうすればよいでしょうか。