NHibernate 3懒惰的属性和渴望的查询

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

  • 我知道在HQL中通过“获取所有属性”可以实现对属性的急切加载,但是可以对LINQ提供者或QueryOver执行相同的操作吗?
  • 如果我通过“获取所有属性”执行HQL查询,结果中的实体确实已被加载,但它们仍被代理。 有没有办法避免这种情况?
  • 干杯


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

    我记得在NH Google讨论中看到过,我无法找到该主题。 如果今天能找到答案,我会更新答案。 但就目前的3.1版本而言,它仅在HQL中有效。

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


    你可以使用这个http://davybrion.com/blog/2009/03/must-everything-be-virtual-with-nhibernate/来禁用你的类的延迟加载(没有代理)
    你可以使用这个http://nhibernate.info/doc/nh/en/index.html#querycriteria-dynamicfetching来加载你的属性
    或者你可以试试这个http://www.timvasil.com/blog14/post/2008/02/WCF-serialization-with-NHibernate.aspx并仍然使用代理。

    链接地址: http://www.djcxy.com/p/50253.html

    上一篇: NHibernate 3 lazy properties and eager queries

    下一篇: Visual C++ thread safety of free and malloc?