Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 25346|Svar: 2

[Kilde] Brug af TransactionScope i C#

[Kopier link]
Opslået på 10/04/2017 10.16.25 | | | |
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 venligSvar






Tidligere:CREATE DATABASE-udsagnsudsagnet er ikke tilladt i en multi-statement transaktion
Næste:Gør at Linqs OrderBy understøtter dynamiske felter
 Udlejer| Opslået på 10/04/2017 10.20.30 |
TransactionScope-klassen kan bruges nedelt, og hvis du vil bruge den nedelt, skal du specificere TransactionScopeOption-parameteren i den indlejrede transaktionsblok. Standardparameteren er Påkrævet.

Når TransactionScopeOption for den indlejrede klasse TransactionScope er påkrævet, kan du se følgende resultat: deres transaktioner har samme ID. Desuden er det kun ægte succes, når begge TransactionScopes er færdige.

Hvis du sætter TransactionScopeOption til RecessesNew, er de indlejrede transaktionsblokke og de ydre transaktionsblokke uafhængige og påvirker ikke hinanden.

TransactionScopeOption er sat til Suppress for at annullere transaktionen af den aktuelle blok, hvilket generelt sjældent bruges.
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com