Профилированный профилировщиком SQL Server: EF 6 завершает каждый вызов хранимой процедуры с помощью BEGIN TRAN
и COMMIT TRAN
.
Разве это не потрясающее изменение?
Возможно, это не только нарушение, но и невозможность любой транзакционной логики в SP, поскольку мы никогда не можем откатить нашу транзакцию в хранимой процедуре с помощью ROLLBACK TRAN
(обратите внимание: в SQL Server нет вложенных транзакций), поэтому один откаты отката до @@TRANCOUNT
ноль. Поскольку мы были в транзакции, потому что EF 6 мы получили "Счет транзакции после EXECUTE, указывает несоответствующее число операторов BEGIN и COMMIT. Предыдущий счет = 1, текущий счет = 0." стандартная ошибка SQL Server.
Пожалуйста, не спрашивайте меня, почему я хочу вызвать хранимые процедуры. У меня сотни, и все они используют логику TRY ... COMMIT ... CATCH ROLLBACK
.
Любые идеи, как я могу помешать EF 6 сделать это?