给定一个对象层次结构,如下所示:
class Category
{
List<SubCategory> SubCategories;
}
class SubCategory
{
List<Product> Products;
}
class Product
{
}
是否可以使用 NHibernate 急切加载整个层次结构?我想执行一个查询来加载所有带有子类别的类别和急切加载的产品。
给定一个对象层次结构,如下所示:
class Category
{
List<SubCategory> SubCategories;
}
class SubCategory
{
List<Product> Products;
}
class Product
{
}
是否可以使用 NHibernate 急切加载整个层次结构?我想执行一个查询来加载所有带有子类别的类别和急切加载的产品。
是的,有可能……但是,您不认为这会对性能产生一些影响吗?您可能会检索到大量数据。
为此,您必须使用 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 进行一些操作。