Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 25346|Απάντηση: 2

[Πηγή] Χρήση του TransactionScope σε C#

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 10/4/2017 10:16:25 π.μ. | | | |
Πεδίο συναλλαγής

Το TransactionScope είναι μια κλάση στο System.Transactions, η οποία είναι μια κλάση που συνοδεύει το πλαίσιο .NET. Εάν το TransactionScope αποδεσμευτεί χωρίς να καλέσει τη μέθοδο Complete (το TransactionScope υλοποιεί τη διεπαφή IDisposible, συνιστάται η χρήση μπλοκ), τότε θα θεωρήσει ότι η λειτουργία αποτυγχάνει και θα επαναφέρει την εκτέλεση.
Το TransactionScope είναι ένα χρήσιμο API που διαχειρίζεται τις συναλλαγές ("γύρω" σημαίνει ότι οι βάσεις δεδομένων που υποστηρίζουν το TransactionScope μπορούν να διαχειρίζονται αυτόματα τις συναλλαγές) και οι περισσότερες κύριες βάσεις δεδομένων υποστηρίζουν αυτό το API, συμπεριλαμβανομένου του MSSQL της Microsoft, φυσικά.
Εάν χρησιμοποιείτε μια βάση δεδομένων ή κάποιο σύστημα που σχετίζεται με συναλλαγές που δεν υποστηρίζει το TransactionScope, μπορείτε να χρησιμοποιήσετε τον αναχαιτιστή, αλλά θα πρέπει να τροποποιήσετε τον κώδικά σας για να χρησιμοποιήσετε ένα κατάλληλο API που υποστηρίζει συναλλαγές (π.χ. χρησιμοποιώντας το BeginTransaction API για να λάβετε την υλοποίηση του IDbTransactions από τον πάροχο της βάσης δεδομένων).



Το παραπάνω είναι μια προσαρμοσμένη εξαίρεση που έριξα επίτηδες για να δω αν μπορεί να επανέλθει κανονικά και η παρακάτω εικόνα είναι κανονική εκτέλεση, χωρίς εξαιρέσεις.




Η κλήση της μεθόδου Complete του TransactionScope υποδεικνύει ότι η συναλλαγή εκτελέστηκε με επιτυχία. Φυσικά, εάν η συναλλαγή εκτελείται πάντα, τότε η συναλλαγή δεν χρειάζεται. Ο λόγος για τον οποίο υπάρχουν συναλλαγές είναι για να λυθεί το πρόβλημα της αποτυχίας σε πολλαπλές λειτουργίες και εάν υπάρξει αποτυχία, θα επανέλθει.
Επειδή το . TransactionScope του .NET, δεν υπάρχει ρητή κλήση επαναφοράς και το πλησιέστερο ισοδύναμο είναι να χρησιμοποιήσετε τη μέθοδο Dispose. Εάν το TransactionScope κυκλοφορήσει πριν από την κλήση της μεθόδου Complete, τότε το TransactionScope εκτελεί επαναφορά. Επομένως, πρέπει να προστεθεί μια κλήση απόρριψης στην όψη του συστήματος παρακολούθησης συναλλαγών για να πραγματοποιηθεί η επαναφορά.


Τέλος, επισυνάψτε τον κωδικό!


Επισυνάπτεται ο πηγαίος κώδικας:
Τουρίστες, αν θέλετε να δείτε το κρυφό περιεχόμενο αυτής της ανάρτησης, παρακαλώΑπάντηση






Προηγούμενος:Η πρόταση CREATE DATABASE δεν επιτρέπεται σε μια συναλλαγή πολλαπλών δηλώσεων
Επόμενος:Κάντε το Linq's OrderBy υποστήριξη δυναμικών πεδίων
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 10/4/2017 10:20:30 π.μ. |
Η κλάση TransactionScope μπορεί να χρησιμοποιηθεί ένθετη και εάν θέλετε να τη χρησιμοποιήσετε ένθετη, πρέπει να καθορίσετε την παράμετρο TransactionScopeOption στο ένθετο μπλοκ συναλλαγών. Η προεπιλεγμένη παράμετρος είναι Υποχρεωτικό.

Όταν απαιτείται το TransactionScopeOption της ένθετης κλάσης TransactionScope, μπορείτε να δείτε το ακόλουθο αποτέλεσμα, οι συναλλαγές τους έχουν το ίδιο αναγνωριστικό. Επιπλέον, είναι πραγματική επιτυχία μόνο όταν και τα δύο TransactionScopes είναι ολοκληρωμένα.

Εάν ορίσετε το TransactionScopeOption σε RequiresNew, τα ένθετα μπλοκ συναλλαγών και τα εξωτερικά μπλοκ συναλλαγών είναι ανεξάρτητα και δεν επηρεάζουν το ένα το άλλο.

Το TransactionScopeOption έχει οριστεί σε Καταστολή για να ακυρώσει τη συναλλαγή του τρέχοντος μπλοκ, το οποίο γενικά χρησιμοποιείται σπάνια.
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com