Ho trovato molte domande e post simili su come farlo, ma non sono sicuro di quale approccio sia migliore. Penso di aver bisogno di una classe DbContextFactory che mi restituirà il contesto in base a TenantId, ma non so come ottenere questo risultato con OnModelCreating. Ho visto principalmente post sull'architettura db-per-tenant e non sono sicuro di sapere come associare lo schema al contesto (tramite l'utente?). Ho provato a seguire questo https://romiller.com/2011/05/23/ef-4-1-multi-tenant-with-code-first/ ma sembra che questo non sia adatto all'ultima versione EF. Ho anche controllato questo multi-tenant con il codice First EF6 ma IDbModelCacheKeyProvider è cambiato e ora richiede DbContext in Crea, al contrario di quello che voglio fare. Potete per favore darmi un esempio di come viene fatto?
Utilizza questo codice per impostare uno schema predefinito nel tuo contesto:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("blogging");
}
Crea un altro contesto usando la stessa stringa di connessione e poi fai:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("mydifferentschemaname");
}
Questo ha ottenuto ciò che desideri.
Ci sono più informazioni qui .
Puoi anche mappare tabelle (entità) a schemi come:
modelBuilder.Entity<Department>().ToTable("t_Department", "school");