違いは何ですか System.Transactions.TransactionScope
およびEF6のDatabase.BeginTransaction
?
誰かが小さな例を挙げたり、明確な違いがあるときに使用するものを説明したりできますか?
追伸:私のプロジェクトでは、EF6を使用しています。私はすでにドキュメントを読みましたが、あまり役に立ちませんでした。例も調べましたが、SqlConnection.BeginTransaction
そして今、MSはこの新しいDatabase.BeginTransaction
EF6で。
Entity Framework 6のドキュメントで答えを見つけました:
EF6の導入により、MicrosoftはDatabase.BeginTransaction()
およびDatabase.UseTransaction()
という新しいAPIメソッドを使用することを推奨しています。 _System.Transactions.TransactionScope
_はまだ非常によくサポートされていますが、EF6のほとんどのユーザーにとってnecessaryではなくなりました。
Database.BeginTransaction()
はデータベース関連の操作トランザクションにのみ使用されますが、それに加えて_System.Transactions.TransactionScope
_により、「プレーンC#コード」もトランザクションに対応できます。
したがって、EF6のトランザクションでdb関連の操作のみを行う場合はDatabase.BeginTransaction()
を使用します。そうでない場合は、トランザクションでdb操作とC#コードを混在させるために_System.Transactions.TransactionScope
_を使用します。
それでもTransactionScope
アプローチを好む人には、特にクラウドシナリオ(クラウドシナリオは分散トランザクションをサポートしません)で、その制限をチェックアウトすることをお勧めします。
さらに詳しい情報は こちら