2

NHibernate のストアド プロシージャから再帰エンティティ (子コレクション/関連付け) を設定する方法があるかどうかを知りたいです。次のクラスがあるとします。

public class Category
{
  public int category_id { set; protected get; }
  public string category_description { set; get; }
  public IEnumerable<Category> SubCategories { set; get; }

  ....
}

カテゴリのグループと子のツリー全体を取得するストアド プロシージャからルート カテゴリのリストを取得する方法はありますか?各カテゴリは SubCategories プロパティ内にそれぞれの子を持ちますか? 「 Eagerly load recursive relationship 」で提案された解決策と同じ結果を取得したいのですが、テーブルではなくストアド プロシージャから結果を取得します。

4

1 に答える 1

3

これは、名前付きクエリで可能です。名前付きクエリに関する NHibernate の公式ドキュメントを参照してください: http://nhibernate.info/doc/nh/en/index.html#querysql-namedqueries

やりたいことは、関連付けに参加できる名前付きクエリの機能を使用することです。<return-join />

この同じトピックに関する NHibernate ブログの例もあります。 -nhibernate.aspx

複雑な例:

<sql-query name="GetCategory">
    <return alias="Category" class="Category"/>
    <return-join alias="Subcategory" property="Category.SubCategories">
        <return-property column="Subcategory.SubcategoryId" name="Id" />
    </return-join>
    EXEC someStoredProcedureName :CategoryId
</sql-query>
于 2012-08-22T02:39:04.967 に答える