我在尝试加载一棵树时遇到问题,这是我的情况,我有一个与自身关联的实体(分层),具有 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/