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 属性中都有其各自的子级?我想得到与“急切加载递归关系”中提出的解决方案相同的结果,但从存储过程而不是表中获取结果。

4

1 回答 1

3

这可以通过命名查询来实现。在此处查看有关命名查询的官方 NHibernate 文档:http: //nhibernate.info/doc/nh/en/index.html#querysql-namedqueries

您想要做的是使用命名查询的功能,它允许您加入关联:<return-join />

NHibernate 博客上还有一个关于同一主题的示例:http: //nhibernate.info/blogs/nhibernate/archive/2008/11/24/populating-entities-with-associations-from-stored-procedures-with -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 回答