c# - 渴望在 NHibernate 中加载一棵树

标签 c# nhibernate eager-loading

我在尝试加载一棵树时遇到问题,这是我的情况,我有一个与自身关联的实体(分层),具有 n 级;问题是,我可以使用 ICriteria 或 HQL 急切地加载整个树吗?

在此先感谢您的帮助。 爱丽儿

最佳答案

是的...只需设置正确的获取模式即可。


我会在一分钟内包含示例。


示例from here =>

IList cats = sess.CreateCriteria(typeof(Cat))
    .Add( Expression.Like("Name", "Fritz%") )
    .SetFetchMode("Mate", FetchMode.Eager)
    .SetFetchMode("Kittens", FetchMode.Eager)
    .List();

您也可以指定预先加载 child 的 child =>

.SetFetchMode("Kittens.BornOn", FetchMode.Eager)

如果您使用 Linq to NHibernate,请使用 Expand 方法 =>

var feedItemQuery = from ad in session.Linq<FeedItem>().Expand("Ads")
                           where ad.Id == Id
                           select ad;

而且我建议使用从传入的 lambda 表达式创建字符串的辅助方法。


很有可能告诉 Criteria 加载整棵树。但我不知道这一点,我更喜欢指定我到底需要什么(加载所有内容似乎很危险)。


是否this有帮助吗?

关于c# - 渴望在 NHibernate 中加载一棵树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2167866/

相关文章:

c# - 如何在 C# 中模拟来自 httpclient 的响应,Azure 函数,如何测试

NHibernate 2.1 : LEFT JOIN on SubQuery with Alias (ICriteria)

c# - 在部署后处理 nHibernate/Fluent nHibernate 中的模式更新

php - Laravel 4.1 急切加载

c# - 如何正确测试 NHibernate FetchMode.Eager?

c# - "using"构造和异常处理

c# - 分配给事件的 lambda 是否会阻止所属对象的垃圾回收?

php - Laravel/Eloquent 查询效率: Should a separate table be used for these two columns?

c# - 将用户参数传递给 SSIS 包

NHibernate 发布关于单向一对多的附加更新