Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 25346|Svare: 2

[Kilde] Bruk av TransactionScope i C#

[Kopier lenke]
Publisert på 10.04.2017 10:16:25 | | | |
TransactionScope

TransactionScope er en klasse i System.Transactions, som er en klasse som følger med .NET-rammeverket. Hvis TransactionScope frigjøres uten å kalle Complete-metoden (TransactionScope implementerer IDisposible-grensesnittet, bruk av blokk anbefales), vil den regne operasjonen som feilet og rulle tilbake kjøringen.
TransactionScope er et nyttig API som håndterer transaksjoner rundt ("rundt" betyr at databaser som støtter TransactionScope automatisk kan håndtere transaksjoner), og de fleste vanlige databaser støtter dette API-et, inkludert Microsofts egen MSSQL, selvfølgelig.
Hvis du bruker en database eller et transaksjonsrelatert system som ikke støtter TransactionScope, kan du fortsatt bruke interceptoren, men du må endre koden din for å bruke et passende API som støtter transaksjoner (f.eks. ved å bruke BeginTransaction API for å få databaseleverandørens implementering av IDbTransactions).



Ovenstående er et egendefinert unntak som jeg bevisst la til for å se om det kan rulles tilbake normalt, og bildet under viser normal utførelse, uten unntak.




Å kalle TransactionScopes Complete-metode indikerer at transaksjonen er vellykket utført. Selvfølgelig, hvis transaksjonen alltid utføres, er transaksjonen ikke nødvendig. Grunnen til at det finnes transaksjoner er å løse problemet med feil i flere operasjoner, og hvis det oppstår en feil, vil den bli rullet tilbake.
Fordi . .NETs TransactionScope har ingen eksplisitt rollback-kall, og nærmeste ekvivalent er å bruke Dispose-metoden. Hvis TransactionScope frigjøres før Complete-metoden kalles, utfører TransactionScope en rollback. Derfor må et Dispose-kall legges til transaksjonsavskjærerens ansikt for å utføre tilbakerullingen.


Til slutt, legg ved koden!


Vedlagt er kildekoden:
Turister, hvis dere vil se det skjulte innholdet i dette innlegget, vær så snillSvare






Foregående:CREATE DATABASE-setningen er ikke tillatt i en transaksjon med flere setninger
Neste:Make Linqs OrderBy støtter dynamiske felt
 Vert| Publisert på 10.04.2017 10:20:30 |
TransactionScope-klassen kan brukes nestet, og hvis du vil bruke den nestet, må du spesifisere TransactionScopeOption-parameteren i den nestede transaksjonsblokken. Standardparameteren er Påkrevd.

Når TransactionScopeOption for den nestede klassen TransactionScope kreves, kan du se følgende resultat: deres transaksjoner har samme ID. Dessuten er det bare ekte suksess når begge TransactionScopes er komplette.

Hvis du setter TransactionScopeOption til RequiresNew, er de nestede transaksjonsblokkene og de ytre transaksjonsblokkene uavhengige og påvirker ikke hverandre.

TransactionScopeOption er satt til Suppress for å kansellere transaksjonen av den nåværende blokken, som vanligvis sjelden brukes.
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com