質問: `System.Transactions.TransactionScope`とEF6の`Database.BeginTransaction`の違いは何ですか? 誰かが小さな例を挙げるか、明確な違いがあるときにどちらを使うか説明することができますか? PS:私のプロジェクトでは、私はEF6を使用しています。私はすでにドキュメントを読んだことがありますが、あまり役に立ちませんでした。また、例を探しましたが、むしろ`SqlConnection.BeginTransaction`を使用してい`SqlConnection.BeginTransaction`そして、MSはEF6でこの新しい`Database.BeginTransaction`を導入しました。
回答: 私はEntity Framework 6のドキュメントで答えを見つけました: EF6の導入により、新しいAPIメソッド`Database.BeginTransaction()`と`Database.UseTransaction()`を使用することをお勧めします。 `System.Transactions.TransactionScope`は依然として非常にうまくサポートされてい`System.Transactions.TransactionScope`が、EF6のほとんどのユーザーにとってはもはや**必要**ありません。 `Database.BeginTransaction()`はデータベース関連の操作トランザクションにのみ使用されますが、 `System.Transactions.TransactionScope`に加えて、「プレーンなC#コード」もトランザクション可能になります。 したがって、 `Database.BeginTransaction()`使用します。これは、EF6のトランザクションでdb関連の操作のみを行う場合は、 `System.Transactions.TransactionScope`を使用してトランザクション内でdb操作とC#コードを混在させます。 `TransactionScope`アプローチを依然として希望する人にとっては、特にクラウドシナリオ(クラウドシナリオは分散トランザクションをサポートしていません)では、制限をチェックアウトすることをお勧めします。 詳細はこちらをご覧ください