2014-07-25 17 views
5

Wenn ich ein Update für meine SQL Server-Datenbank ausführe, erhalte ich ein Ergebnis der Zeilen, die von der Aktualisierung betroffen sind AND die betroffenen Zeilen einiger Trigger.Nur Ergebnis der Aktualisierungsabfrage

So zum Beispiel, ein Update direkt auf Datenbank ausgeführt:

UPDATE: (32 row(s) affected) 
Trigger1: (1 row(s) affected) 
Trigger2: (2 row(s) affected) 
... 

Nun, wenn ich _context.Database.ExecuteSqlCommand(query, params) ausführen ich bekomme immer die Summe aller dieser Ergebnisse ist der Ergebniswert in meinem Beispiel 35.

Ich brauche nur das Ergebnis der UPDATE, in meinem Beispiel 32.

Gibt es eine Möglichkeit, die Ergebnisse der Trigger zu ignorieren?

Antwort

2

Ich denke @ Alireza's Antwort macht am meisten Sinn, wenn es möglich ist, die Trigger zu ändern, aber wenn es nicht ist, könnten Sie Ihren Datenbankaufruf ändern, um die Update-Anweisung auszuführen und @@ROWCOUNT zurückgeben?

_context.Database.SqlQuery<int>("update xx ...; select @@ROWCOUNT"); 

Ich kann keine Dokumentation auf MSDN finden aber this question bestätigt, dass @@ ROWCOUNT durch Trigger nicht beeinträchtigt wird.

+0

nette idee, ich werde es versuchen! –

+0

Dies könnte eine bessere Lösung in Bezug auf diesen speziellen Fall sein – Alireza

+0

ja, in meinem Fall sicher. Ansonsten ist die sauberere Lösung deine @ Alireza –

3

Setzen Sie SET NOCOUNT ON in die erste Zeile Ihrer Trigger.

+0

ist es mir nicht möglich, die Auslöser zu ändern, sonst wäre es eine nette Lösung. –

+0

Liegt das an einer Erlaubnis? Oder gibt es andere Gründe? – Alireza

+0

Ja, es ist eine große Datenbank, die von mehreren Programmen verwendet wird. Also ist es nicht so einfach ;-) –

Verwandte Themen