TransactionScope
TransactionScope er en klasse i System.Transactions, som er en klasse, der følger med .NET-frameworket. Hvis TransactionScope frigives uden at kalde Complete-metoden (TransactionScope implementerer IDisposible-interfacet, brug af blok anbefales), vil den betragte operationen som fejlet og rulle eksekveringen tilbage. TransactionScope er et nyttigt API, der håndterer transaktioner rundt ("rundt" betyder, at databaser, der understøtter TransactionScope, automatisk kan håndtere transaktioner), og de fleste mainstream-databaser understøtter dette API, inklusive Microsofts egen MSSQL, selvfølgelig. Hvis du bruger en database eller et transaktionsrelateret system, der ikke understøtter TransactionScope, kan du stadig bruge interceptoren, men du skal ændre din kode for at bruge et passende API, der understøtter transaktioner (f.eks. ved at bruge BeginTransaction API til at få databaseudbyderens implementering af IDbTransactions).
Ovenstående er en brugerdefineret undtagelse, som jeg bevidst har smidt ind for at se, om det kan rulles tilbage normalt, og billedet nedenfor viser normal eksekvering, uden undtagelser.
Kald af TransactionScope's Complete-metode indikerer, at transaktionen er udført med succes. Selvfølgelig, hvis transaktionen altid udføres, er transaktionen ikke nødvendig. Grunden til, at der er transaktioner, er at løse problemet med fejl i flere operationer, og hvis der opstår en fejl, vil den blive rullet tilbage. Fordi . .NET's TransactionScope har ikke noget eksplicit rollback-kald, og det nærmeste tilsvarende er at bruge Dispose-metoden. Hvis TransactionScope frigives, før Complete-metoden kaldes, udfører TransactionScope en rollback. Derfor skal et Dispose-kald tilføjes til transaktionsinterceptorens ansigt for at udføre rollbacken.
Endelig, vedhæft koden!
Vedhæftet er kildekoden:Turister, hvis I vil se det skjulte indhold i dette indlæg, så vær venlig Svar
|