C#NHibernate StaleObjectStateException

时间:2018-11-21 21:13:55

标签: c# hibernate exception

我有一个与NHibernate链接的MySQL数据库。 我收到StaleObjectStateException

  

消息:测试方法DALTest.UnitTest1.AddingResultAndGetAll被抛出   异常:NHibernate.StaleObjectStateException:行已更新或   被另一笔交易删除(或未保存的值映射为   错误):[Domain.Bean.Result#3]

...在rr.Save呼叫上:

DateTime date = new DateTime();
rr = new ResultRepository();
FootRace foot = new FootRace(2,"une courseeee", "vraiment une chouette course", date, 5, false);
Participant part = new Participant(2,"Boveeé", "Joseeé", 123, "M", date, 5);

rr.Save(new Result(3,foot,part , new TimeSpan(2500),5)); 

我的接口实现是

public void Save(Result result) {
                var e =Session.GetSessionImplementation().PersistenceContext.EntityEntries;
                Session.SaveOrUpdate(result);
                Session.Flush();
            }

进行了一些研究后,看来这是一个线程问题,但我找不到解决方案。顺便说一下,在我调用此测试时就重置了数据库,因此内部绝对没有任何东西。


这是XML映射文件:

<class name="Result" table="result">
    <id name="Id" column="idResult" type="int">
        <generator class="native"></generator>
    </id>
    <many-to-one name="FootRace" class="FootRace" column="idFootRace" cascade="save-update"/>
    <many-to-one name="Participant" class ="Participant" column ="idParticipant" cascade="save-update"/>
    <property name="RaceTime" column="raceTime" not-null="false"/>
    <property name="Rank" column="rank"/>
</class> 

0 个答案:

没有答案