0

Est-il possible d'utiliser TransactionScope avec un jeu de données typé?TransactionScope avec jeu de données typé

comme dans:

using (var transaction = new TransactionScope()) 
{ 
    typedDataSet.DeleteStuff(id); 

    typedDataSet2.DeleteSomeOtherStuff(id2); 

    transaction.Complete(); 
} 

Est-ce que les requêtes SQL liées à DeleteStuff (id) et DeleteSomeOtherStuff (id) est en réalité transactionnelle si une erreur est levée?

J'ai lu cet article de Bogdan Chernyachuk au Using Transactions with Strongly Typed datasets et j'espère que je n'aurai pas à le faire de cette façon.

Répondre

0

Réponse courte: Oui, cela est transactionnel.

Pas trop difficile à tester non plus. J'ai jeté une exception juste avant la transaction. Complete() et les données n'ont pas été supprimées de la base de données.

using (var transaction = new TransactionScope()) 
{ 
    typedDataSet.DeleteStuff(id); 

    typedDataSet2.DeleteSomeOtherStuff(id2); 
    throw new NullReferenceException(); 
    transaction.Complete(); 
} 

Weirdly si je PROFILES ce qui se passait dans la db avec SQL Server Profiler et les procédures stockées qui ont été référencées par l'ensemble de données typé ont été exécutés sur le serveur. Cependant, les données ont été en quelque sorte annulées.

Questions connexes