Un intérieur étendue de la transaction annulée si l'extérieur de l'étendue de transaction n'est pas terminée?
J'ai deux transactions étendues, l'un dans l'autre. J'aimerais savoir si l'intérieur étendue de la transaction sera annulée après qu'il a été commis et l'extérieur, ce n'est pas complète.
- Une bonne explication de divers
TransactionScopeOption
choix; enfin, elle prend tout son sens: docs.microsoft.com/en-us/previous-versions/...
Vous devez vous connecter pour publier un commentaire.
Depuis qu'ils sont imbriqués, l'intérieure de la transaction sera annulée.
Ce n'est pas toute l'histoire, et dépend de la façon dont vous créez la transaction imbriquée, mais par défaut, il reviendra.
Cet article passe en profondeur sur
TransactionScope
et devrait répondre à la plupart de vos questions.Être distribué ou non n'est pas pertinent.
Il dépend de la portée de l'option de commencer la transaction imbriquée portée avec.
Si vous utilisez l'option par défaut
TransactionScopeOption.Required
puis imbriquée de la portée va s'inscrire dans la même transaction que l'extérieur de la portée et quand l'extérieur de la portée des rouleaux de retour à l'intérieur de la portée va également être annulée, même si elle a appeléComplete
.Si, toutefois, vous utilisez
TransactionScopeOption.RequiresNew
puis imbriquée de la portée va commencer sa propre transaction et de la remplir séparément à partir de l'extérieur de la portée, de sorte qu'il ne sera pas revenir en arrière, même si l'extérieur de la portée des rouleaux de retour.Si vous utilisez
TransactionScopeOption.Suppress
puis le sous-champ d'application ne prendra pas part à l'extérieur de la transaction et non un point de vue transactionnel, ne fait donc pas partie du travail qui pourrait être annulée si l'extérieur de la transaction est annulée.