私は2つのトランザクションスコープを持っています。内部トランザクションスコープがコミットされ、外側のトランザクションスコープが完了しなかった場合にロールバックされるかどうかを知りたいです。外部トランザクションスコープが完了していない場合、内部トランザクションスコープはロールバックされますか?
答えて
これらはネストされているため、内部トランザクションはロールバックされます。
これはすべての話ではなく、ネストされたトランザクションの作成方法によって異なりますが、デフォルトではロールバックされます。
This articleは、深さが約TransactionScope
になり、ほとんどの質問に回答する必要があります。
配布されているかどうかは関係ありません。
これは、ネストされたトランザクションスコープを開始するスコープオプションによって異なります。
デフォルトオプションTransactionScopeOption.Required
を使用すると、ネストされたスコープは外側のスコープと同じトランザクションに参加し、外側のスコープがロールバックするときに内側のスコープもComplete
を呼び出した場合でもロールバックされます。
ただし、TransactionScopeOption.RequiresNew
を使用すると、ネストされたスコープは独自のトランザクションを開始し、外側スコープとは別に完了するため、外側スコープがロールバックされてもロールバックされません。
TransactionScopeOption.Suppress
を使用すると、ネストされたスコープは外部トランザクションに参加せず、非トランザクションで完了するため、外部トランザクションがロールバックされた場合にロールバックされる作業の一部を形成しません。
完璧な答え:) –
- 1. トランザクションスコープまたはIDbTransaction
- 2. ネストされたトランザクションスコープのタイムアウト
- 3. トランザクションスコープ機能
- 4. ローカルデータベースのトランザクションスコープ
- 5. WCFとNHibernateのトランザクションスコープ
- 6. MQマネージャ接続がトランザクションスコープに参加していません
- 7. Jarsignerが内部コマンドまたは外部コマンドとして認識されない
- 8. 'tar'が内部または外部コマンドとして認識されない
- 9. 'pyuic5'が内部コマンドまたは外部コマンドとして認識されない
- 10. cmdが内部コマンドまたは外部コマンドとして認識されない
- 11. 'nodejs'が内部コマンドまたは外部コマンドとして認識されない
- 12. javacが内部コマンドまたは外部コマンドとして認識されない
- 13. 'cl'が内部コマンドまたは外部コマンドとして認識されない
- 14. 'rails'が内部コマンドまたは外部コマンドとして認識されない
- 15. 'gulp'が内部または外部のコマンドとして認識されない
- 16. 'powershell.exeA'が内部コマンドまたは外部コマンドとして認識されない
- 17. 'svn'が内部コマンドまたは外部コマンドとして認識されない
- 18. が内部または外部コマンドとして認識されない
- 19. NODE_DEBUGが内部コマンドまたは外部コマンドとして認識されない
- 20. PsExecが内部コマンドまたは外部コマンドとして認識されない
- 21. node-devが内部または外部コマンドとして認識されない
- 22. dnvmが内部コマンドまたは外部コマンドとして認識されない
- 23. プログラムが内部コマンドまたは外部コマンドとして認識されない
- 24. 'PORT'が内部コマンドまたは外部コマンドとして認識されない
- 25. 'gradlew.bat'が内部または外部のコマンドとして認識されない
- 26. 'bash'が内部コマンドまたは外部コマンドとして認識されない
- 27. ジェンキンでMvnが内部または外部として認識されない
- 28. 'apkanalyzer'が内部コマンドまたは外部コマンドとして認識されない
- 29. tiが内部コマンドまたは外部コマンドとして認識されない
- 30. 「Conda」が内部コマンドまたは外部コマンドとして認識されない
@Frantisekは分散トランザクションについて言及しました。どのように私は分散トランザクションを使用して知っていますか? – Tebo
私は間違っていたと思う。 TransactionScopeを使用すると、おそらくdtcは必要ありません。このhttp://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspxを参照してください: "ネストされたスコープは、ルートスコープのアンビエントトランザクションに参加できますが、ネストされたスコープでCompleteを呼び出しますルートスコープに影響を与えません。ルートスコープから最後の入れ子スコープまでのすべてのスコープがトランザクションをコミットする場合にのみ、トランザクションはコミットされます。 –
あなたはこれについて知っていると確信していますが、実際にネストされたトランザクションはなく、ネストされたTransactionScopesだけであるため、「内部トランザクション」と「ネストされたトランザクション」という用語はIMHOは不適切です。 TransactionScopeOption.Requiredを選択すると1つの大きなトランザクションになり、TransactionScopeOption.RequiresNewには2つの完全に独立したトランザクションがありますが、(閉じた)ネストされたトランザクションの意味でネストされません。 –