2012-05-20 36 views
6

我正在構建具有共享數據庫和共享模式方法的多租戶應用程序。所以按照我在每個表格中都有「Tenant_Id」列的方法。那麼有什麼辦法可以在每個查詢中自動附加一個where子句...多租戶應用程序和實體框架

+0

您好,我這裏有一個非常類似的問題可能會有所幫助:http://stackoverflow.com/questions/9587814/entity-framework-for-multi-tenant-architecture-filterings-single-table -by-tena –

回答

5

你可以使用圍繞你的DbContext的包裝來實現這一點,並用一個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

獲取someId的最佳方式是什麼?在我的情況下,用戶可以訪問多個帳戶/租戶,這意味着我的WHERE子句需要過濾。 我打算在用戶登錄到應用程序時獲取授權帳戶的列表,然後將該列表存儲到會話變量中。 MVC4,Entity Framework 5.0,SQL Server 2012。 – HackITMngr