2012-05-20 18 views
6

Estoy construyendo una aplicación multi-tenant con una base de datos compartida y un enfoque de esquema compartido. Entonces, según el enfoque, tengo la columna "Tenant_Id" en cada una de las tablas. Entonces, ¿hay alguna forma de adjuntar automáticamente una cláusula Where en cada consulta ...Multi-Tenant Application and Entity Framework

+0

Hola, tengo una pregunta muy similar aquí que puede ser de ayuda: http://stackoverflow.com/questions/9587814/entity-framework-for-multi-tenant-architecture-filterings-single-table -por-tena –

Respuesta

5

Puede lograr esto utilizando un contenedor alrededor de su DbContext y anular cada colección de entidades con una cláusula where.

public class WrapperContext : YourDBContext 
{ 

    public override DbSet<YourEntitity> YourEntities 
    { 
    get 
    { 
     return base.YourEntities.Where(t => t.Tenant_Id == someId); 
    } 
    set 
    { 
     base.YourEntities = value; 
    } 
    }  
} 
+1

¿Cuál es la mejor manera de obtener el IDA? En mi caso, un usuario puede tener acceso a múltiples cuentas/inquilinos, lo que significa que mi cláusula WHERE debe filtrarse. Estaba planeando obtener la lista de cuentas autorizadas cuando el usuario inicia sesión en la aplicación y luego almacena esa lista en una variable de sesión. MVC4, Entity Framework 5.0, SQL Server 2012. – HackITMngr