出乎意料的是,我在使用 nhibernate 进行大量更新时遇到了此错误。
行已被另一个事务更新或删除(或未保存值映射不正确):[MyDomainObject]
错误中没有附加信息。是否有一些推荐的方法来帮助识别根本问题,或者有人可以给我一个更好的解释来说明此错误所表明的内容或周围的症状。
一些附加信息
我查看了该对象,所有数据看起来都很好,它有一个 ID 等。 。
请注意,这是在来自 asp.net-mvc 网站的单个调用堆栈中运行的,因此我不认为在并发性方面需要担心任何线程问题。
NHibernate 有一个对象,我们称之为theObject
. theObject.Id
值为42
。 NHibernate 注意到该对象是脏的。对象的 Id 与未保存的值不同,对于整数主键,未保存的值为零 (0)。因此 NHibernate 发出更新语句,但没有更新任何行,这意味着数据库中没有该类型对象的行Id
of 42
。因此该对象已在 NHibernate 不知情的情况下被删除。这可能发生在另一个事务中(例如,您有线程问题),或者如果有人(或另一个应用程序)直接使用 SQL 对数据库删除/更改了行。
另一种可能性是你的未保存值是错误的。例如您正在使用-1
指示未保存的实体,但您的映射的未保存值为零。这不太可能,因为您的应用程序通常是根据声音运行的。如果未保存的值错误,您将无法将任何实体保存到数据库,因为 NHibernate 会发出这样的命令UPDATE
本应发布的声明INSERT
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)