2014-07-25 25 views
5

Po uruchomieniu aktualizacji w mojej bazie danych programu SQL Server otrzymuję wynik wierszy, których dotyczy aktualizacja i, w których znajdują się niektóre wyzwalacze.Pobierz tylko wynik kwerendy aktualizacyjnej

Tak na przykład, zmiana wykonywane bezpośrednio na bazie danych:

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

Teraz kiedy wykonać _context.Database.ExecuteSqlCommand(query, params) zawsze dotrzesz sumę wszystkich tych wyników, w moim przykładzie wartość rezultacie 35.

Potrzebuję tylko wyniku z UPDATE, w moim przykładzie 32.

Czy istnieje możliwość zignorowania wyników wyzwalaczy?

Odpowiedz

2

Myślę, że odpowiedź @ Alireza ma sens, jeśli możliwa jest zmiana wyzwalaczy, ale czy nie można zmienić wywołania bazy danych, aby wykonać instrukcję aktualizacji i zwrócić @@ROWCOUNT?

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

nie mogę znaleźć żadnej dokumentacji na MSDN ale this question potwierdza, że ​​@@ ROWCOUNT jest niezależne od wyzwalaczy.

+0

fajny pomysł, spróbuję! –

+0

To może być lepsze rozwiązanie w tym szczególnym przypadku – Alireza

+0

tak, w moim przypadku na pewno. W przeciwnym razie czystsze rozwiązanie jest twoje. @Alireza –

3

Umieść SET NOCOUNT ON w pierwszym wierszu wyzwalaczy.

+0

Nie można zmienić wyzwalaczy, w przeciwnym razie byłoby to miłe rozwiązanie. –

+0

Czy to z powodu pozwolenia? A może istnieją inne powody? – Alireza

+0

Tak, jest to duża baza danych, używana przez kilka programów. Więc to nie takie proste ;-) –

Powiązane problemy