Question

TransactionScope est une caractéristique étonnante, mais trop peu de fournisseurs ne mettre en œuvre correctement. Je ne veux pas passer la connexion en tant que paramètre.

Était-ce utile?

La solution

Je ne sais pas ce que vous vouliez réaliser en utilisant TransactionScope ici - si idée est d'avoir un flux auotmatic de transactions à travers des méthodes (et simples dans les transactions engagement en cours), puis la connexion passe en tant que paramètre n'est pas la seule façon. Vous pouvez passer la connexion en cours et la transaction en utilisant le courant CallContext (ou thread courant). Mettez une enveloppe statique simple qui vérifierait si la connexion / transaction existe sur le contexte de l'appel en cours et crée sinon. Ceci est de manière non-intrusive transparente, par opposition à passer par le paramètre.

Maintenant, si vous regardez les transactions qui coule à travers les frontières de domaine d'applications et / ou en utilisant plusieurs gestionnaires de ressources (par exemple en utilisant les transactions distribuées), le meilleur pari serait d'utiliser TransactionScope et déployer votre ResourceManager. Bien sûr, ce n'est pas une chose banale mais qui est ce que l'exigence qu'implique. Si le système sous-jacent ne fournit pas gestionnaire de ressources transactionnelles alors des ressources personnalisées peut utiliser la transaction de compensation pour avoir le dos de rouleau (par exemple, un gestionnaire sur un haut de système de fichiers peut utiliser « Supprimer le dossier » comme opération de compensation contre la transaction initiale de « Créer un dossier ») .

Autres conseils

Peut-être que vous cherchez système Prévalence .

En fait, chaque transaction est journalisé (les détails de la transaction sont enregistrées ) et si l'application se bloque et est redémarré, vous pouvez reprendre là où vous l'avez laissé ou annuler les changements en fonction de l'état journalisé.

Voici un lien vers la modèle instantané qui peut vous aider à mettre en œuvre la prévalence du système.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top