渴望在NHibernate中加载一棵树

我在尝试加载树时遇到问题,这是我的情况,我有一个与自身相关联的实体(Hierarchic),有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到NHibernate,请使用Expand method =>

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

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


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


这有帮助吗?