Ho una soluzione di Visual Studio contenente tre progetti. Uno è DAL (Data Access Layer) che sta utilizzando Entity Framework Core con un ApplicationDbContext. Ho fatto riferimento ad un altro (il secondo progetto) che è un pannello di back-end che gli utenti saranno autenticati con la directory attiva e gli utenti e i ruoli saranno gestiti con l'aiuto di ASP.NET Identity.
Ho creato un altro progetto ASP.NET Core (il sito web - terzo progetto) che serve per la separazione del pannello e del sito web. Qui è anche referenziato il progetto DAL. Voglio memorizzare gli utenti del sito Web nello stesso database del progetto del pannello di back-end, ma voglio tabelle separate per gli utenti di back-end e gli utenti del sito web.
Nel progetto del sito Web ho creato un altro ApplicationDbContext e in OnModelCreating
ho sovrascritto il nome predefinito delle tabelle Identity con prefisso diverso da AspNet
. La stringa di connessione al database è la stessa per entrambi ApplicationDbContext
. Ho aggiunto Add-Migration Inital
e poi aggiornato il database di Update-Database
. Ottengo le nuove tabelle con il nuovo prefisso nello stesso database con quelli con prefisso AspNet
.
Fin qui tutto bene.
Il problema che devo affrontare è che non è semplice interrogare il database con due contesti diversi.
Quindi la mia domanda è: è possibile utilizzare l'identità di ASP.NET due volte nello stesso database con lo stesso contesto?
Sono aperto ad accettare altre soluzioni per ottenere ciò di cui ho bisogno.
No. Non è possibile avere due istanze separate di tabelle e classi Identity nello stesso contesto. Il modo in cui lo stai facendo con contesti separati è il metodo migliore. Se vuoi semplificare l'accesso, ti consigliamo di creare una o più classi di stile di servizio che vengono iniettate in entrambi i contesti. Quindi, puoi semplicemente inserire la tua classe di servizio nella tua applicazione, invece, e lavorare con una sola cosa tramite quella. Ovviamente dovrai scrivere metodi che interagiscano con i tuoi due contesti, a seconda delle necessità, ma è un lavoro che devi fare una volta sola e quindi puoi trarne i benefici da lì.