2012-05-20 16 views
6

Buduję aplikację dla wielu dzierżawców ze wspólną bazą danych i współużytkowanym schematem. Zgodnie z tym podejściem mam kolumnę "Tenant_Id" w każdej z moich tabel. Czy jest jakiś sposób, aby automatycznie dołączyć klauzulę where w każdym zapytaniu ...Aplikacja dla wielu dzierżawców i jednostek Entity Framework

+0

Witam, mam bardzo podobne pytanie tutaj, które mogą być pomocne: http://stackoverflow.com/questions/9587814/entity-framework-for-multi-tenant-architecture-filterings-single-table -by-tena –

Odpowiedz

5

Możesz to osiągnąć za pomocą wrappera wokół swojego DbContext i zastąpić każdą kolekcję jednostek klauzulą ​​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

Jaki jest najlepszy sposób, aby uzyskać someId? W moim przypadku użytkownik może mieć dostęp do wielu kont/dzierżawców, więc oznacza to, że moja klauzula WHERE musi zostać przefiltrowana. Planowałem uzyskać listę autoryzowanych kont, gdy użytkownik loguje się do aplikacji, a następnie zapisuje tę listę w zmiennej sesji. MVC4, Entity Framework 5.0, SQL Server 2012. – HackITMngr

Powiązane problemy