Sto costruendo un'applicazione multi-tenant con database condiviso e approccio a schema condiviso. Quindi secondo l'approccio ho la colonna "Tenant_Id" in ciascuna delle mie tabelle. Quindi non v'è alcun modo per collegare automaticamente una clausola in cui in ogni query ...Multi-Tenant Application and Entity Framework
6
A
risposta
5
È possibile ottenere questo usando un wrapper per il vostro DbContext
, e ignorare ogni collezione di entità con una clausola dove.
public class WrapperContext : YourDBContext
{
public override DbSet<YourEntitity> YourEntities
{
get
{
return base.YourEntities.Where(t => t.Tenant_Id == someId);
}
set
{
base.YourEntities = value;
}
}
}
+1
Qual è il modo migliore per ottenere l'ID? Nel mio caso, un utente può avere accesso a più account/tenant, quindi significa che la mia clausola WHERE deve essere filtrata. Stavo pianificando di ottenere l'elenco degli account autorizzati quando l'utente accede all'applicazione e quindi memorizza l'elenco su una variabile di sessione. MVC4, Entity Framework 5.0, SQL Server 2012. – HackITMngr
Ciao, ho una domanda molto simile qui che può essere di aiuto: http://stackoverflow.com/questions/9587814/entity-framework-for-multi-tenant-architecture-filterings-single-table -by-tena –