关于NHibernate中的lazyload大数据大小

时间:2012-09-11 02:25:42

标签: nhibernate

我在映射中有一个集合如下:

<set name="Persons" cascade="all"  inverse="true" lazy="true">
  <key column="idDepartment" />
  <one-to-many class="Person" />
</set>

我想懒洋洋地加载persons中的孩子, 但是person类有很多列,所以数据大小总是很大。 如果我想懒得加载一个列,例如personid,我该怎么办呢?

2 个答案:

答案 0 :(得分:1)

默认情况下,你不能。

您有两种选择。将所有需要的属性标记为延迟加载。然后将使用属性子集获取实体,而稍后获取其他实体。但这可能会严重损害整体性能。

第二个选项是发出单独的查询,以获得您想要的精确列。 Nhiberante有它的项目,或者你可以使用LINQ。

答案 1 :(得分:0)

如果你的用例是你只需要加载一些人,你可以考虑使用lazy =“extra”。

您还可以质疑Person的设计 - 也许较小的Person实体引用更具体和详细的​​数据是有益的吗?

另一种选择是简单地没有Department.Persons集合。我发现我倾向于避免这种收集,例如集合很大而集合所有者并不真正拥有集合中的项目。