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å snill Svare
|