Δεν έχω καταλάβει ακριβώς την ερώτηση που θέτεις στο τέλος, ωστόσο ας τα πιάσουμε λίγο από την αρχή.
To TransactionScopeOption.Suppress υποδηλώνει ότι ο contained κώδικας δεν συμμετέχει ως τμήμα κανενός transaction και διαθέτει δικό του μηχανισμό compensation (δηλαδή είναι custom οι ενέργειες που θα γίνονται στο rollback - πχ. αν το action είναι η απoστολή ενός e-mail, το compensation action είναι η αποστολή ενός νέου που θα λέει "παρακαλώ αγνοήστε το προηγούμενο"). Για να πούμε τι κάνει με πιο απλά λόγια, στο τρέχον transaction ανοίγει μια παρένθεση και εκτελεί ένα άλλο που δεν σχετίζεται με το εξωτερικό. Βασικά, δεν έχει πολύ νόημα η χρήση του...
Επίσης να πούμε ότι το Complete δεν είναι commit. Με το Complete, δηλώνεις ότι έχει ολοκληρωθεί η εκτέλεση των statements του transaction και κατόπιν θα επακολουθήσει το commit από τον transaction manager. Δεν υπάρχει όμως καμιά εγγύηση ότι το commit θα επιτύχει.
Άρα λοιπόν τα δύο scopes στον κώδικά σου είναι άσχετα και ορθώς το update του scope1 εκτελείται άσχετα με το τι θα συμβεί στο scope2. Κατόπιν, υπάρχει κάποιο άλλο πρόβλημα;
Vir prudens non contra ventum mingit