【发布时间】:2017-09-08 15:01:02
【问题描述】:
我在刷新对 db 的更改时收到此错误。我只更改 Matricula 属性。我之前曾尝试刷新更改,以确保没有任何待处理的内容,实际上它什么也没做。
接下来我要做的是更改该属性,并在刷新更改后立即更改。 生成的 SQL 是正确的,但它表示只有 1 行受到影响,而 212 行受到影响。
[16:49:27,122] NHibernate.SQL - DEBUG: Batch commands:
command 0:UPDATE Ordenes_Bonos SET Matricula = @p0 WHERE IdOrden = @p1 AND
IdBono = @p2;@p0 = '020012' [Type: String (4000:0:0)], @p1 = 115862 [Type:
Int32 (0:0:0)], @p2 = 10 [Type: Int32 (0:0:0)]
[16:49:27,566] NHibernate.Event.Default.AbstractFlushingEventListener -
ERROR: Could not synchronize database state with session
NHibernate.AdoNet.TooManyRowsAffectedException: Batch update returned
unexpected row count from update; actual row count: 212; expected: 1
所以接下来我要做的是直接在数据库上检查相同的查询,以防有太多行因触发器而改变(我不这么认为,但以防万一):
BEGIN TRANSACTION;
UPDATE Ordenes_Bonos
SET Matricula = '020012'
WHERE IdOrden = '115862'
AND IdBono = '10'
SELECT @@ROWCOUNT;
ROLLBACK;
输出为 1。
那么,为什么 NHibernate 说 212 行在 UPDATE 上发生了变化?
【问题讨论】:
-
您是否在数据库中设置了可以从您的更新中启动的触发器?
-
是的,有一些触发器可能会从该更新开始。但在那种情况下,我的 SQL 查询不应该这么说吗?
标签: sql-server nhibernate