DBへの変更をフラッシュ中にこのエラーが発生しました。私はMatricula
プロパティだけを変更しています。私は何もしていないことを確認するために前に変更をフラッシュしようとしました。NHibernate TooManyRowsAffectedException
私がする次のことは、そのプロパティを変更し、変更がフラッシュされた直後です。 生成されたSQLは正しいですが、212行は1つしかなくてはならない場合に影響します。
BEGIN TRANSACTION;
UPDATE Ordenes_Bonos
SET Matricula = '020012'
WHERE IdOrden = '115862'
AND IdBono = '10'
SELECT @@ROWCOUNT;
ROLLBACK;
:
[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
だから私は次のことは(私は念のためにそうは思わないが)トリガが原因で変更されたので、多くの行があった場合、データベースに直接同じクエリをチェックしています
出力は1です。
なぜ、NHibernateは212行がそのUPDATEで変更されたと言っていますか?
更新プログラムから起動されるDBにトリガ設定がありますか? – Fran
はい、その更新プログラムから起動するトリガがあります。しかし、その場合私のSQLクエリはそう言ってはいけませんか? – Pinx0