Runtime: Solution de contournement pour les applications dépendantes de DTC en ce qui concerne le portage vers NetCore 3.0

Créé le 5 déc. 2019  ·  3Commentaires  ·  Source: dotnet/runtime

Tous,

Si votre application netcore encapsule plusieurs connexions dans un champ d'application, vous obtiendrez une erreur d'exécution :
"Cette plate-forme ne prend pas en charge les transactions distribuées."

Je me demande quelle est la meilleure solution de contournement pour les applications Web qui sont portées sur netcore3, qui utilisait DTC. Est-ce de refactoriser pour utiliser le modèle UnitOfWork ?

Je ne veux pas gérer les connexions dans ma couche métier, ce que TransactionScope m'a aidé.

Merci!

En rapport:
Problème ouvert : https://github.com/dotnet/corefx/issues/13532
Débordement de pile : https://stackoverflow.com/questions/56328832/transactionscope-throwing-exception-this-platform-does-not-support-distributed-t

area-System.Transactions untriaged

Commentaire le plus utile

Nous souhaitons également effectuer un portage de .NET Framework vers .NET Core et nous nous sommes rendu compte que DTC n'est pas pris en charge avec TransactionScope, ce qui semble être une rupture dans la mesure où nous pouvons effectuer un portage vers .NET Core.

Nos cas d'utilisation spécifiques sont :

  1. Nous devons écrire dans deux tables de base de données différentes résidant sur deux serveurs SQL distincts et nous assurer que tout est engagé de manière atomique dans la base de données, ce que nous faisons aujourd'hui avec succès en utilisant TransactionScope et DTC.
  2. Nous devons INSÉRER/METTRE À JOUR/SUPPRIMER plusieurs tables de base de données en une seule transaction à partir de notre code de couche métier qui n'a aucune connaissance de la base de données. Nous y parvenons avec succès aujourd'hui en créant un TransactionScope dans notre couche métier qui à son tour effectue plusieurs appels à notre couche d'accès aux données qui effectue les opérations de base de données nécessaires.

Étant donné que les transactions distribuées ne sont actuellement pas prises en charge dans .NET Core, quelle est la recommandation de Microsoft comme solution de contournement ?

Tous les 3 commentaires

Nous souhaitons également effectuer un portage de .NET Framework vers .NET Core et nous nous sommes rendu compte que DTC n'est pas pris en charge avec TransactionScope, ce qui semble être une rupture dans la mesure où nous pouvons effectuer un portage vers .NET Core.

Nos cas d'utilisation spécifiques sont :

  1. Nous devons écrire dans deux tables de base de données différentes résidant sur deux serveurs SQL distincts et nous assurer que tout est engagé de manière atomique dans la base de données, ce que nous faisons aujourd'hui avec succès en utilisant TransactionScope et DTC.
  2. Nous devons INSÉRER/METTRE À JOUR/SUPPRIMER plusieurs tables de base de données en une seule transaction à partir de notre code de couche métier qui n'a aucune connaissance de la base de données. Nous y parvenons avec succès aujourd'hui en créant un TransactionScope dans notre couche métier qui à son tour effectue plusieurs appels à notre couche d'accès aux données qui effectue les opérations de base de données nécessaires.

Étant donné que les transactions distribuées ne sont actuellement pas prises en charge dans .NET Core, quelle est la recommandation de Microsoft comme solution de contournement ?

Nous étudions la faisabilité d'apporter cette fonctionnalité à Core, veuillez continuer à suivre dotnet/corefx#13532 , ce problème sera bientôt déplacé vers ce référentiel.

Problème déplacé vers dotnet/runtime #715

Cette page vous a été utile?
0 / 5 - 0 notes