我在尝试加载树时遇到问题,这是我的情况,我有一个与自身相关联的实体(Hierarchic),有n个级别;问题是,我可以使用ICriteria或HQL急切加载整个树吗?
提前感谢您的帮助。 爱丽儿
答案 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有帮助吗?