我在尝试加载树时遇到问题,这是我的情况,我有一个与自身关联的实体(层次结构),具有 n 个级别;问题是,我可以使用 ICriteria 或 HQL 急切地加载整个树吗?
预先感谢您的任何帮助。
爱丽儿
是的...只需设置正确的获取模式即可。
我将在一分钟内提供示例。
采取的例子从这里 https://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/querycriteria.html =>
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 加载整棵树。但我不知道这一点,我更喜欢指定我到底需要什么(加载所有内容似乎很危险)。
Does this http://ayende.com/Blog/archive/2009/08/28/nhibernate-tips-amp-tricks-efficiently-selecting-a-tree.aspx helps?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)