FluentNHでNHibernateを使用しています。
これが4つのクラスです。
FormType
public class FormType
{
public virtual int Id
{ get; set; }
public virtual string Name
{ get; set; }
public virtual IList<KeyCompetency> KeyCompetencies
{ get; set; }
}
KeyCompetency
public class KeyCompetency
{
public virtual int Id
{ get; set; }
public virtual string Name
{ get; set; }
public virtual FormType FormType
{ get; set; }
public virtual IList<SubCompetency> SubCompetencies
{ get; set; }
}
サブコンピテンシー
public class SubCompetency
{
public virtual int Id
{ get; set; }
public virtual string Name
{ get; set; }
public virtual KeyCompetency KeyCompetency
{ get; set; }
public virtual IList<Ability> Abilities
{ get; set; }
}
能力
public class Ability
{
public virtual int Id
{ get; set; }
public virtual string Description
{ get; set; }
public virtual SubCompetency SubCompetency
{ get; set; }
}
idに基づいてフォームタイプを読み込もうとしています。
using (var session = DataContext.OpenSession())
{
return session.Query<FormType>()
.Where(x => x.Id == 1)
.FetchMany(x => x.KeyCompetencies)
.ThenFetchMany(x => x.SubCompetencies)
.ThenFetchMany(x => x.Abilities)
.ToList().FirstOrDefault();
}
キーコンピテンシー、サブコンピテンシーの重複レコードを取得しています。