我的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?
谢谢。
答案 0 :(得分:1)
索引未更新,因为您的映射要求不更新索引。
从{this.props.cities.map(this.renderWeather.bind(this)}
映射中移除update="false"
。它也适用于key
。该索引被视为列表键的一部分。
如果你使用旧版本的NHibernate,你可能还有old bug。