【问题标题】:Is it possible to eager load over two one-to-many relationships in NHibernate?是否可以在 NHibernate 中急切加载两个一对多关系?
【发布时间】:2009-03-17 11:29:23
【问题描述】:

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

class Category
{
    List<SubCategory> SubCategories;
}

class SubCategory
{
    List<Product> Products;
}

class Product
{
}

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

【问题讨论】:

  • 你找到解决方案了吗?

标签: nhibernate eager


【解决方案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 进行一些尝试,这取决于你的情况/你想要什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多