1

NHibernate (3.3.1) に再帰的な親子カテゴリ関係をロードさせようとしています。

public class Category 
{
    public virtual int Id { get; set; }

    public virtual bool IsActive { get; set; }

    public virtual string Name { get; set; }

    public virtual Category Parent { get; set; }

    public virtual IList<Category> Children { get; set; }

    public Category()
    {
        Children = new List<Category>();
    }

    public virtual int GetChildCount()
    {
        return Children.Count;
    }
}

そして、私の XML マッピング...

 <class name="nHibernatePOC.Domain.Category, nHibernatePOC" lazy="true">
    <id name="Id" column="CategoryId">
      <generator class="identity" />
    </id>
    <property name="Name" column="Name" />
    <property name="IsActive" column="IsActive" />
    <many-to-one name="Parent" class="nHibernatePOC.Domain.Category" column="ParentCategoryId" /> 

    <bag lazy="true" name="Children">
      <key column="ParentCategoryId" />
      <one-to-many class="nHibernatePOC.Domain.Category" />
      <loader query-ref="GetCategoryByParentId"/>
    </bag> 
  </class>

私の問題は、がnullになる可能性があるため、アクセスしようとするChildren.Countと取得することです。NullReferenceExceptionParent

4

1 に答える 1

0

今後の参考のために、問題は子コレクションのロードに使用されたストアド プロシージャに関連していました。(テーブル/ビューからの遅延読み込みではなく)。ありがたいことに、ストアド プロシージャを使用する代わりに、ビューから読み込むことができます。

<loader要素を削除し、データベース (MSSQL 2012) からのビューを使用するように戻した瞬間、期待どおりに機能しました。

非常に奇妙です。ストアド プロシージャを使用する必要がある人には申し訳ありませんが、この場合はストアド プロシージャを削除するのが適切な理由だと思います。

于 2013-05-14T11:20:33.137 に答える