Uno dei vantaggi dell'ambito della transazione rispetto a una transazione è che puoi utilizzarlo senza fare riferimento alla connessione.
Ciò consente di utilizzarlo potenzialmente al di fuori del livello dati in modo che la logica aziendale possa decidere se due o più operazioni di dati debbano essere parte della stessa transazione o meno.
Tuttavia, avendo detto che TransactionScope dipende ancora dall'oggetto di connessione che lo supporta. Quindi usarlo al di fuori del DAL introduce questa dipendenza nascosta. Che è tutt'altro che ideale.
Il mio approccio personale è di mantenere il suo uso nella classe Repository in cui metodi privati generici come InsertMyObject (connessione con) presuppongono che una transazione possa essere nell'ambito e metodi pubblici specifici come UpdateMyObjectsByDate () crea le transazioni e chiama i metodi privati come richiesto.
Si può sostenere che i metodi specifici si sovrappongono in una certa misura alla logica aziendale. Ma questo è un problema un po '"soft" piuttosto che un "duro", in realtà hai una dipendenza a cui posso puntare, problema