1

给定一个对象层次结构,如下所示:

class Category
{
    List<SubCategory> SubCategories;
}

class SubCategory
{
    List<Product> Products;
}

class Product
{
}

是否可以使用 NHibernate 急切加载整个层次结构?我想执行一个查询来加载所有带有子类别的类别和急切加载的产品。

4

1 回答 1

1

是的,有可能……但是,您不认为这会对性能产生一些影响吗?您可能会检索到大量数据。

为此,您必须使用 ICriteria 的“SetFetchMode”方法来检索实例。

像这样的东西:

ICriteria crit = session.CreateCriteria (typeof(Category));

crit.SetFetchMode ("SubCategories", FetchMode.Eager);

或者,也许通过使用 CreateAlias:

ICriteria crit = session.CreateCriteria (typeof(Category));

crit.CreateAlias ("SubCategories", "sc", JoinType.LeftOuterJoin);
crit.CreateAlias ("sc.Products", "p", JoinType.InnerJoin);

也许您将不得不根据您的情况/您想要的内容对可能的 JoinTypes 进行一些操作。

于 2009-03-17T11:45:40.850 回答