NHibernate中的排序列表没有序列号

时间:2013-05-02 14:04:30

标签: c# nhibernate

我在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>

如何重写地图以删除此空位?

1 个答案:

答案 0 :(得分:0)

由于我们在表中采用的遗留概念,我遇到了类似的情况:我们的索引列始终以 1 开头,在 0 位置始终是一个令人讨厌的空值当我们将集合检索为列表时。

我们案例的解决方案是将这些集合改为ISet

为了保持顺序,我们现在放置order-by attribute in our mappings,并自己控制索引持久性。

使用您的示例,那将成为:

<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)