使用NHibernate 2.0.1实现类似于lazy ="extra"的功能的最佳方法

mar*_*lly 5 nhibernate

我有一对多的关系,其中子表可以有数十万条记录.在这种情况下,调用Parent.ChildCollection.Count会强制子集合的延迟初始化,这非常昂贵.

在Hibernate 3.0中有一个lazy ="extra"功能,它允许您检查集合属性的子集,而不会延迟加载整个事物.

不幸的是,直到NHibernate 2.1仍处于Alpha状态时才会出现这种情况. http://jira.nhibernate.org/browse/NH-855

如何使用NHibernate 2.0.1实现这一目标?

我曾经有过这样的特殊属性

<property name="ChildCollectionCount" type="int" formula="(select count(*) from ChildTable child where child.parentID = parentID "/>
Run Code Online (Sandbox Code Playgroud)

但我不能再使用这些了,因为我现在正在共享这个库,这对其他用户来说也是一个性能问题.

Chr*_*ton 0

当您说这对其他用户来说是一个性能问题时,您的意思是他们也想访问该集合,但它对他们来说太大了。或者代码片段/ChildCollectionCount 对他们来说太慢了?

如果是第一种情况,那么您可能需要为他们提供类似的解决方案 - 准确识别他们的需求并提供提供该设施的方法。