2012-05-20 4 views
6

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

+0

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 –

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