2009-09-04 6 views
2

新FluentNHibernateへ= DシンプルFluentNHibernate親/子マッピング

次のように私は、親/子クラスを持っている:

public ParentMap() 
{ 
    Id(x => x.ID); 
    Map(x => x.Name); 
    HasMany(x => x.Children) 
     .Inverse(); 
     .Cascade.All(); 
} 

public ChildMap() 
{ 
    Id(x => x.ID); 
    Map(x => x.Name); 
    //Map(x => x.ActiveParent) 
    // .Column(ParentID); 
} 

コメントアウトエリア:のマッピングで

public class Parent 
{ 
    public virtual int ID { get; private set; } 
    public virtual string Name { get; set; } 
    public virtual IList<Child> Children { get; set; } 
} 

public class Child 
{ 
    public virtual int ID { get; private set; } 
    public virtual string Name { get; set; } 
    public virtual Parent ActiveParent { get; set; } 
} 

を子供の地図の私は現在問題を抱えている質問です。子オブジェクトを作成してその親(つまり、someChild.ActiveParent)を呼び出すことができるようにしたいと思いますが、流暢なインターフェイスでこれをどのようにマップするかはわかりません。

子テーブルのテーブル構造には親オブジェクトが保持されています(呼び出された場合は、その親オブジェクトを遅延読み込みする)。どんな助けでもいつも大歓迎です。 mxmissileの答えに追加

答えて

6
References(x => x.Parent); 
+0

うん、確かにその上を飛んだ。 –

0

、あなたはReferences()コールの終了にLazyLoad()を追加したいと思うでしょうし、また、あなたの設定でこのような何かをしたい場合があります:

.Mappings(m => 
    m.FluentMappings.AddFromAssemblyOf<ParentMap>() 
     .ConventionDiscovery.Add(ForeignKey.EndsWith("ID"))) 

最後に行はFluent NHibernateがデフォルト(Parent_Id?)ではなくParentIDのような名前の外部キーを期待するように指示するので、すべての関係マッピングで明示的に列名を指定する必要はありません。

+0

ああ、コンフィギュレーション側の追加の説明をありがとう。私は暗闇の中で、列のマッピングで起こっている「魔法」についてちょっと考えていました。 –

+1

流暢なNHibernateには、必要に応じて変更/微調整が可能ないくつかの慣習があります。詳細はこちら:http://wiki.fluentnhibernate.org/Conventions –

関連する問題