如何使用nhibernate动态加载惰性/急切性
是否有一种在加载时在两个实体之间动态设置加载策略的方法 例如,如果我有一个如何使用nhibernate动态加载惰性/急切性,nhibernate,Nhibernate,是否有一种在加载时在两个实体之间动态设置加载策略的方法 例如,如果我有一个父实体,它有一个子实体的列表,我可能希望在某些情况下加载“父”实体,其中包含惰性加载的子实体,而在其他情况下则包含急切加载的子实体 有办法做到这一点吗?映射似乎暗示了它的一个或另一个。是的,建议的策略是默认您的实体使用延迟加载,然后当您想要急切地加载它们时,更改查询并指定您想要急切地加载您的子实体 至于您实际如何实现渴望加载,这取决于您使用的查询样式。(即Linq2NH、标准、HQL) 例如,对于Linq2NH,我相信是这
父
实体,它有一个子
实体的列表,我可能希望在某些情况下加载“父”实体,其中包含惰性加载的子实体,而在其他情况下则包含急切加载的子实体
有办法做到这一点吗?映射似乎暗示了它的一个或另一个。是的,建议的策略是默认您的实体使用延迟加载,然后当您想要急切地加载它们时,更改查询并指定您想要急切地加载您的子实体 至于您实际如何实现渴望加载,这取决于您使用的查询样式。(即Linq2NH、标准、HQL) 例如,对于Linq2NH,我相信是这样的:
session.Query<Parent>().Fetch(p => p.Child)...
var criteria = context.Session.CreateCriteria<Parent>();
criteria.SetFetchMode("Child", NHibernate.FetchMode.Eager);
....
最后,使用Criteria API,您可以执行以下操作:
session.Query<Parent>().Fetch(p => p.Child)...
var criteria = context.Session.CreateCriteria<Parent>();
criteria.SetFetchMode("Child", NHibernate.FetchMode.Eager);
....
var-criteria=context.Session.CreateCriteria();
criteria.SetFetchMode(“Child”,NHibernate.FetchMode.Eager);
....