私は持っている
public class Parents {
public Parents() {
Childs = new HashedSet<Childs>();
}
public virtual int Id {get; set;}
public virtual String Name {get; set;}
public virtual ISet<Childs> Childs {get; protected set;}
}
public class Childs {
public virtual int Id {get; set;}
public virtual String Name {get; set;}
public virtual Parents Parent {get; set;}
}
マッピング
....
.Override<Parents>(map => {
map.HasMany(x => x.Childs).KeyColumn("parent_id").Cascade.SaveUpdate().Not.LazyLoad().AsSet().Fetch().Join();
})
.Override<Childs>(map => {
map.References(x => x.Parent, "parent_id");
})
....
Link、HQL、または AutoMapper を使用して子を持つ親を取得 (選択) するにはどうすればよいですか? たとえば、テストケースで次のようなクエリがあります。
Parents parent = new Parents {Name = "parent test"};
Childs child = new Childs {Name = "child test", Parent = parent};
session.Save(parent);
session.Save(child);
...
var myParent = session.QueryOver<Parents>().Where(x=>x.Id==1).List()[0];
Assert.IsTrue(myParent.Childs.Count>0);
...
ログにクエリが表示されます:結合で選択しますが、子なしで親のみを取得します