Ciao tedo, benvenuto nel forum.
Il modo più semplice a mio parere per risolvere il tuo problema è passare alla funzione Salva() della classe utenti il TransactionScope generato nella classe ordini.

In questo modo puoi continuare ad utilizzare il TS anche se utilizzi la finzione in un altro contesto:

classe utente public bool Salva(TransactionScope scope) { if(scope == null) { TransactionOptions transactionOptions = new TransactionOptions(); transactionOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; transactionOptions.Timeout = new TimeSpan(0, 5, 0); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOptions)) { bool result = Database.SalvaUtente(); if (result) scope.Complete(); else scope.Dispose(); return result; } } return Database.SalvaUtente(); }

Prova e aggiusta dove serve, non l'ho testata... Ma credo che la soluzione si annidi in questo tipo di approccio.

Buon lavoro