渴望在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加载整棵树。 但我不知道这一点,我更喜欢指定我需要的东西(加载一切似乎很危险)。
这有帮助吗?