我在尝试加载树时遇到问题,这是我的情况,我有一个与自身关联的实体(层次结构),具有 n 个级别;问题是,我可以使用 ICriteria 或 HQL 急切地加载整个树吗?
提前感谢您的帮助。爱丽儿
我在尝试加载树时遇到问题,这是我的情况,我有一个与自身关联的实体(层次结构),具有 n 个级别;问题是,我可以使用 ICriteria 或 HQL 急切地加载整个树吗?
提前感谢您的帮助。爱丽儿
是的...只需设置正确的 fetchmode。
我将在一分钟内提供示例。
示例取自这里=>
IList cats = sess.CreateCriteria(typeof(Cat))
.Add( Expression.Like("Name", "Fritz%") )
.SetFetchMode("Mate", FetchMode.Eager)
.SetFetchMode("Kittens", FetchMode.Eager)
.List();
您也可以指定急切加载孩子的孩子=>
.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 加载整个树。但我不知道这一点,我更喜欢指定我到底需要什么(加载所有内容似乎很危险)。
这有帮助吗?