在某些实体上执行NHibernate删除时,我们遇到以下错误:
StaleStateException - Unexpected row count: 0; expected: 1
我们已经在我们的应用程序中删除了大量此类实体,但这一次,它不能。使用SQL Server Profiler,我可以看到NHibernate发送所需的查询来删除关系,然后发送两次delete from XXX where id = xx
。它在第二次查询后崩溃(它应该返回0,因为第一个删除查询实际上删除了实体)。
对于同类的其他实体,只有一个delete
...我正在寻找有关此问题的更多调查的提示。
编辑:已删除的实体是聚合根。
答案 0 :(得分:0)
在问题中没有更详细的信息,我认为我们能做的最好的事情是随机猜测问题所在。我有一个猜测是什么问题,也许其他人有其他的猜测,所以我将作为一个社区维基开始这篇文章,以便其他人可以为这个问题贡献可能的原因。
cascade="all-delete-orphan"
包中删除多个相同的删除。如果一个包已经包含了一个项目,但是你再次添加了同一个项目,那么当您从该集合中删除这两个相同的项目时,也许可以对同一个项目进行两次删除。
还有其他想法吗?