Ho un progetto principale asp.net che è diviso nella seguente struttura
- Regolatore
- Conservare
- Repository
- Conservare
Il controller riceve richieste e chiama gli archivi corretti responsabili delle azioni contro il database (Crea utenti, Aggiorna record, ecc.) Il modo in cui lo vedo il controller dovrebbe essere agnostico al database - non dovrebbe controllare le transazioni, o nemmeno essere consapevole della loro esistenza.
L'archivio crea una transazione e chiama i repository richiesti e i loro metodi CRUD richiesti.
Questo è abbastanza semplice. Tuttavia, spesso mi ritrovo a ripetere il codice, a causa della gestione delle transazioni.
A volte voglio aggiungere utenti e aggiungerli a un gruppo - Quindi se avessi un GroupsStore
e un UsersStore
- ora ho un GroupsUsersStore
che fa esattamente lo stesso di quegli store, ma di mettendolo in una transazione.
Questo è ovviamente sbagliato, ma non riesco a pensare ad una soluzione migliore - dal momento che le transazioni non possono essere nidificate in SQL Server, e voglio che anche quei negozi funzionino in modo indipendente.
Come risolve questo problema?