Runtime: NetCore3.0への移植に関するDTCに依存するアプリの回避策

作成日 2019年12月05日  ·  3コメント  ·  ソース: dotnet/runtime

全て、

netcoreアプリがtransactionscopeで複数の接続をラップする場合、ランタイムエラーが発生します。
「このプラットフォームは分散トランザクションをサポートしていません。」

DTCを使用したnetcore3に移植されているWebアプリの最善の回避策は何でしょうか。 UnitOfWorkパターンを使用するためにリファクタリングすることですか?

TransactionScopeが支援したビジネスレイヤーで接続を管理したくありません。

ありがとう!

関連している:
未解決の問題: https //github.com/dotnet/corefx/issues/13532
スタックオーバーフロー: https //stackoverflow.com/questions/56328832/transactionscope-throwing-exception-this-platform-does-not-support-distributed-t

area-System.Transactions untriaged

最も参考になるコメント

また、.NETFrameworkから.NETCoreに移植したいと考えており、.NET Coreに移植できるという点で、DTCがTransactionScopeでサポートされていないという事実に遭遇しました。

具体的な使用例は次のとおりです。

  1. 2つの別々のSQLServerにある2つの異なるデータベーステーブルに書き込み、すべてがアトミックにデータベースにコミットされていることを確認する必要があります。これは、今日、TransactionScopeとDTCを使用して正常に実行されます。
  2. データベースの知識がないビジネスレイヤーコードから、1回のトランザクションで複数のデータベーステーブルをINSERT / UPDATE / DELETEする必要があります。 今日、ビジネスレイヤーにTransactionScopeを作成し、必要なデータベース操作を実行するデータアクセスレイヤーを複数回呼び出すことで、これを成功させています。

現在、分散トランザクションは.NET Coreでサポートされていないため、回避策としてMicrosoftから推奨されていることは何ですか?

全てのコメント3件

また、.NETFrameworkから.NETCoreに移植したいと考えており、.NET Coreに移植できるという点で、DTCがTransactionScopeでサポートされていないという事実に遭遇しました。

具体的な使用例は次のとおりです。

  1. 2つの別々のSQLServerにある2つの異なるデータベーステーブルに書き込み、すべてがアトミックにデータベースにコミットされていることを確認する必要があります。これは、今日、TransactionScopeとDTCを使用して正常に実行されます。
  2. データベースの知識がないビジネスレイヤーコードから、1回のトランザクションで複数のデータベーステーブルをINSERT / UPDATE / DELETEする必要があります。 今日、ビジネスレイヤーにTransactionScopeを作成し、必要なデータベース操作を実行するデータアクセスレイヤーを複数回呼び出すことで、これを成功させています。

現在、分散トランザクションは.NET Coreでサポートされていないため、回避策としてMicrosoftから推奨されていることは何ですか?

この機能をCoreに導入する可能性を調査しています。引き続き、dotnet / corefx#13532を追跡してください。この問題は、まもなくこのリポジトリに移動されます。

問題はdotnet / runtime#715に移動しました

このページは役に立ちましたか?
0 / 5 - 0 評価