2012-05-20 14 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

関連する問題