给定对象层次结构,如下所示:
class Category
{
List<SubCategory> SubCategories;
}
class SubCategory
{
List<Product> Products;
}
class Product
{
}
是否可以使用NHibernate急切加载整个层次结构?我想执行一个查询来加载所有类别,包括子类别和急切加载的产品。
答案 0 :(得分: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。