Sto sviluppando un sistema utilizzando .NET che verrà utilizzato da più utenti. Per questo motivo, ho bisogno di identificare sul database quali dati appartengono a ciascun utente. Spiegando con un esempio, immagina di avere l'entità Product
. Quindi ogni utente ha i suoi prodotti e quindi nel database sulla tabella dei prodotti dobbiamo essere in grado di distinguere tra i prodotti di ciascun utente.
Detto questo, la mia soluzione era quella di aggiungere al database una colonna aggiuntiva per ogni tabella per l'id utente. Ora, sul mio codice era come aggiungere ai miei repository un parametro per ricevere l'id dell'utente in modo che il repository fosse in grado di localizzare i dati corretti. L'implementazione concreta del repository per gestire i database relazionali è sufficiente controllare quelle colonne.
Il problema è che per essere in grado di ottenere quelle colonne disponibili sul mio repository e sul mio ORM (nel caso EF) avevo bisogno di aggiungere su ogni entità una proprietà UserID
. Il problema è che se penso che per un po 'non sembra una buona soluzione. Sto accoppiando le entità di dominio con dettagli su come mantenere i dati. Oltre a ciò, sto accoppiando ogni entità con il modo in cui gestisco l'accesso ai dati e questo sembra un approccio sbagliato.
Quindi, conciliarlo, c'è un modo migliore per pianificare questo? Un modo per assicurarci di poter mettere in relazione i dati con gli utenti e allo stesso tempo di evitare tali proprietà sulle entità di dominio?