从列表

时间:2017-04-24 14:15:03

标签: nhibernate

我的A级有一个属性:

public virtual IList<IVisitor> Visitors { get; set; }

映射如下:

<list name="Visitors" table="Visitor" cascade="all-delete-orphan">
  <key column="SomeID" not-null="true" update="false" />
  <index column="idx" />
  <one-to-many class="Visitor" />
</list>

当列表中有3个对象时,它们具有idx 0,1和2。

现在当我删除中间对象并保存我的A实例时:

a.Visitors.RemoveAt( 1 );
a.Save(); // calls session.SaveOrUpdate( a );

删除相应的行,但其他两行保持其idx 0和2。

为什么NHibernate没有将它更新为0和1?

谢谢。

1 个答案:

答案 0 :(得分:1)

索引未更新,因为您的映射要求不更新索引。

{this.props.cities.map(this.renderWeather.bind(this)}映射中移除update="false"。它也适用于key。该索引被视为列表键的一部分。

如果你使用旧版本的NHibernate,你可能还有old bug