SQL Server プロファイラーによるプロファイリング: EF 6 は、すべてのストアド プロシージャ呼び出しをBEGIN TRANandでラップしCOMMIT TRANます。
重大な変更ではありませんか?
おそらくこれは重大な変更であるだけでなく、ストアド プロシージャでトランザクションをロールバックできないROLLBACK TRANため (注: SQL Server にはネストされたトランザクションはありません)、SP でトランザクション ロジックを不可能にするため、1 回のロールバックで@@TRANCOUNTゼロにロールバックします。EF 6 のためにトランザクションを行っていたため、「EXECUTE 後のトランザクション カウントは、BEGIN ステートメントと COMMIT ステートメントの数が一致していないことを示しています。前のカウント = 1、現在のカウント = 0」を取得しました。標準の SQL Server エラーです。
ストアド プロシージャを呼び出す理由を聞かないでください。私は何百も持っていますが、それらはすべてTRY ... COMMIT ... CATCH ROLLBACKロジックを使用しています。
どうすればEF 6がこれを行うのを防ぐことができますか?