2017-04-24 44 views
1

我的類A有一個屬性:NHibernate的不更新索引列

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

索引不會更新,因爲您的映射要求它們不要更新。

從您的key映射中刪除update="false"。它也適用於index。該索引被認爲是列表鍵的一部分。

如果您使用舊版本的NHibernate,您可能還有此old bug

+0

它似乎工作,謝謝!我剛剛從另一個列表中複製update =「false」,但我忘記了爲什麼。所有測試都是綠色的,所以它可能沒有影響 – Powerslave

+1

也許是因爲[this](/ a/11576097/1178314)。 –