0

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();
}

キーコンピテンシー、サブコンピテンシーの重複レコードを取得しています。

4

1 に答える 1

2

Setこの問題を回避するようにコレクションをマップします。この質問への回答を参照してください。また、IDで選択しているため、の.SingleOrDefault代わりに使用することをお勧めしますFirstOrDefault

于 2013-01-01T18:52:17.587 に答える