我一直在爭奪這個問題進行了兩天。NHibernate的:從許多一對多的關係,刪除子項將導致異常
我有一個多到許多關係的幾個類,配置如下所示:
<class name="Entry" table="Entries">
<id name="Id" column="Id">
<generator class="native" />
</id>
<timestamp name="LastUpdated" column="Entry_LastUpdated" generated="always" />
...
<bag name="Sections" generic="true" table="EntrySections" inverse="false" cascade="none">
<key column="EntrySection_EntryId" />
<many-to-many column="EntrySection_SectionId" class="Blogs.BusinessLogic.Section, Blogs.BusinessLogic"/>
</bag>
</class>
<class name="Section" table="Sections">
<id name="Id" column="Id" unsaved-value="0">
<generator class="native" />
</id>
<timestamp .../>
...
<bag name="Entries" generic="true" table="EntrySections" inverse="false" cascade="none">
<key column="EntrySection_SectionId" />
<many-to-many column="EntrySection_EntryId" class="Blogs.BusinessLogic.Entry, Blogs.BusinessLogic"/>
</bag>
</class>
它在,我可以刪除,也就是說,一個Section
對象及其關聯的方式配置任何條目將被刪除。
然而,當我想只刪除的關聯,例如:
entry.Sections.Remove(section);
這是我此對象上執行的唯一操作。但是,當會話刷新,以下StaleObjectStateException拋出異常:
行被另一事務更新或刪除(或者未保存值的映射是不正確的): [Project.BusinessLogic.Entry#22]
我一直玩弄inverse
和cascade
值和谷歌搜索的答案,但找不到任何解決方案。 inverse="true"
和cascade="all/all-delete-orphan"
都沒有效果。
這是一個與多對多關係有關的問題,還是我看錯了方向?
我的類映射不正確嗎?
編輯
難道這是從NHibernate的工作原理與方式和日期時間結構產生的問題?
您能否在每個映射中包含您的部分?你是否使用? –
2010-07-06 14:43:07
@ShaneC:我已添加部分。我正在使用時間戳映射而不是版本。 –
GeReV
2010-07-07 07:50:34