Considérons l'exemple de fragment de code donné ci-dessous.Utilisation de TransactionScope avec des bases de données en C#
Les modifications apportées à la base de données sont-elles annulées lorsque je n'écris pas transaction.Complete();
à la fin?
using (var transaction = new System.Transactions.TransactionScope())
{
var database = new DatabaseContext();
var userA = database.Users.Find(1);
var userB = database.Users.Find(2);
userA.Name = "Admin";
database.SaveChanges();
userB.Age = 28;
database.SaveChanges();
transaction.Complete(); // Do changes done by database.saveChanges(); gets reverted if this statement is ommited ?
}
Merci à l'avance.
Il est vraiment facile à tester. Commentez la ligne et regardez ce qui se passe – Steve
Pourquoi cette question? Commenter la ligne devrait prouver que le retour en arrière fonctionne. Avez-vous rencontré un comportement différent? Y a-t-il une autre question derrière tout cela? –
Pour une explication complète jetez un oeil dans MSDN [à la méthode] (https://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.complete (v = vs.90) .aspx). –