C# NHibernate:从多对多关系中删除子项会导致异常

C# NHibernate:从多对多关系中删除子项会导致异常,c#,nhibernate,hibernate,C#,Nhibernate,Hibernate,我已经为这个问题争论了几天了 我有两个多对多关系的类,配置如下: <class name="Entry" table="Entries"> <id name="Id" column="Id"> <generator class="native" /> </id> <timestamp name="LastUpdated" column="Entry_LastUpdated" generated="alway

我已经为这个问题争论了几天了

我有两个多对多关系的类,配置如下:

<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>
这是我对该对象执行的唯一操作。但是,当会话刷新时,会引发以下StaleObjectStateException异常:

行被另一个事务更新或删除(或未保存的值映射不正确): [项目.业务逻辑.条目#22]

我一直在玩弄
级联
值,并在谷歌上搜索答案,但找不到任何解决方案。无论是
inverse=“true”
还是
cascade=“all/all delete orphan”
都没有奏效。
这是一个与多对多关系有关的问题,还是我看错了方向?
我的类是否映射错误

编辑


这可能是由于NHibernate使用和DateTime结构的方式导致的问题吗?

您不需要将关联的一端标记为“反向=真”,另一端标记为“反向=假”吗?
通过这样做,您定义了协会的“所有者”。

显然,我的假设是正确的。问题是由
引起的

我设计和映射它的方式似乎存在一些问题,或者可能是NHibernate本身的问题。
时间戳映射为:

<timestamp name="LastUpdated" column="Entry_LastUpdated" generated="always" />

数据库(MSSQL 2005 server)中的字段类型为
datetime
,对象上有一个匹配的
System.datetime
属性。这不起作用

我尝试了一些其他配置,但也无法使其工作。
最后,我删除了
,并将使用代码管理修改日期,同时在需要时添加数字版本字段


如果有人能在NHibernate中提供任何带有时间戳的版本管理信息,我们将不胜感激。

您能在每个映射中包含您的部分吗?你在用吗?@ShaneC:我已经添加了这个部分。我使用的是时间戳映射,而不是版本。我认为在这种特殊情况下,这没有任何区别。如果我没有弄错的话,主要是为了帮助NHibernate决定如何创建协会。我的问题似乎与此无关。
<timestamp name="LastUpdated" column="Entry_LastUpdated" generated="always" />