4

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

提前感谢您的帮助。爱丽儿

4

1 回答 1

1

是的...只需设置正确的 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 加载整个树。但我不知道这一点,我更喜欢指定我到底需要什么(加载所有内容似乎很危险)。


有帮助吗?

于 2010-01-30T12:34:59.343 回答