NHibernate中没有序号的排序列表

本文关键字:排序 列表 NHibernate | 更新日期: 2023-09-27 18:11:54

我在类Foo中有一个排序列表。我读到索引列必须是顺序的,从0开始,然后是1,2,3,4,5…

在我的例子中,在order列中我有0,1,2,5。所以Foo对象有一个长度为6的列表。位置3和4为空

这是地图

<list name="Bars" cascade="all-delete-orphan">
  <key column="Foo_id" />
  <index column="order" />
  <one-to-many class="Bar" />
</list>

我如何重写映射以删除这些空位置?

NHibernate中没有序号的排序列表

由于我们在表中采用的遗留概念,我有类似的情况:我们的索引列总是从1开始,当我们将集合作为列表检索时,总是在0位置保留一个讨厌的空值。

我们的解决方案是将这些集合用作ISet

为了保持顺序,我们现在将order-by属性放在映射中,并自己控制索引持久性。

用你的例子,它将变成:

<set name="Bars" cascade="all-delete-orphan" order-by="order">
  <key column="Foo_id" />
  <one-to-many class="Bar" />
</set>

PS:不要忘记将集合变量类型更改为Iesi.Collections.Generic.ISet(Of Bar)