Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 25346|Svar: 2

[Källa] Användning av TransactionScope i C#

[Kopiera länk]
Publicerad på 2017-04-10 10:16:25 | | | |
Transaktionsomfattning

TransactionScope är en klass i System.Transactions, som är en klass som följer med .NET-ramverket. Om TransactionScope släpps utan att anropa Complete-metoden (TransactionScope implementerar IDisposible-gränssnittet, att använda block rekommenderas), kommer den att anse operationen som misslyckad och rulla tillbaka exekveringen.
TransactionScope är ett användbart API som hanterar transaktioner runt ('around' betyder att databaser som stödjer TransactionScope automatiskt kan hantera transaktioner), och de flesta vanliga databaser stödjer detta API, inklusive Microsofts egen MSSQL, förstås.
Om du använder en databas eller något transaktionsrelaterat system som inte stöder TransactionScope kan du fortfarande använda interceptorn, men du måste modifiera din kod för att använda ett lämpligt API som stödjer transaktioner (t.ex. att använda BeginTransaction API för att hämta databasleverantörens implementation av IDbTransactions).



Ovan är ett anpassat undantag som jag medvetet lade till för att se om det kan rullas tillbaka normalt, och bilden nedan visar normal exekvering, utan undantag.




Att anropa TransactionScopes Complete-metod indikerar att transaktionen har genomförts framgångsrikt. Naturligtvis, om transaktionen alltid genomförs, behövs inte transaktionen. Anledningen till att det finns transaktioner är att lösa problemet med fel i flera operationer, och om det uppstår ett fel kommer det att rullas tillbaka igen.
För att . .NET:s TransactionScope har inget explicit rollback-anrop, och den närmaste motsvarigheten är att använda Dispose-metoden. Om TransactionScope släpps innan Complete-metoden anropas, utför TransactionScope en rollback. Därför måste ett Dispose-anrop läggas till på transaktionsinterceptorns ansikte för att utföra rollbacken.


Slutligen, bifoga koden!


Bifogat är källkoden:
Turister, om ni vill se det dolda innehållet i detta inlägg, snällaSvar






Föregående:CREATE DATABASE-satsen är inte tillåten inom en multi-statement-transaktion
Nästa:Gör att Linqs OrderBy stödjer dynamiska fält
 Hyresvärd| Publicerad på 2017-04-10 10:20:30 |
Klassen TransactionScope kan användas nästlad, och om du vill använda den nästlad måste du ange parametern TransactionScopeOption i det nästlade transaktionsblocket. Standardparametern är Krävs.

När TransactionScopeOption för den nästlade klassen TransactionScope krävs kan du se följande resultat, deras transaktioner har samma ID. Dessutom är det bara sann framgång när båda Transaktionsscopes är klara.

Om du ställer in TransactionScopeOption till RequiresNew, är de nästlade transaktionsblocken och de yttre transaktionsblocken oberoende och påverkar inte varandra.

TransactionScopeOption är inställd på Suppress för att avbryta transaktionen av det aktuella blocket, vilket vanligtvis sällan används.
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com