渴望在NHibernate中加载一棵树

时间:2010-01-30 12:32:43

标签: c# nhibernate eager-loading

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

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

1 个答案:

答案 0 :(得分:1)

是的......只需设置正确的fetchmode。


我将在一分钟内提供示例。


采取的示例from here =>

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到NHibernate,请使用Expand method =>

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

我建议使用helper方法创建从lambda表达式中传递的字符串。


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


this有帮助吗?