NHibernate 3懒惰属性和急切的查询

Yhr*_*hrn 7 nhibernate lazy-loading

我正在使用NHibernate 3.0.0和新功能的懒惰属性.但是,在某些查询中,我想急切地加载属性,我希望查询导致非代理实体实例.我也更喜欢使用LINQ提供程序或QueryOver.所以我的两个问题是:

  1. 我知道可以通过"获取所有属性"在HQL中实现对属性的急切加载,但是可以对LINQ提供程序或QueryOver执行相同的操作吗?
  2. 如果我使用"获取所有属性"执行HQL查询,结果中的实体确实会被急切地加载,但它们仍然被代理.有没有办法避免这种情况?

干杯

Phi*_*ill 4

对于问题 1:答案是否定的,http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties中描述的“获取所有属性”目前仅在 HQL 中支持。

我记得在 NH Google 讨论中的某个地方看到过,我找不到该主题。如果我今天能找到它,将更新答案。但截至当前的 3.1 版本,它仅支持 HQL。

对于问题2:我不知道是否有办法避免这种情况,在使用WCF时,我通常将它们转换为DTO并序列化DTO,而不是NH Poco。莱昂纳多的链接看起来很有趣并且可能会有所帮助。