多租户应用程序和实体框架

6

我正在构建一个使用共享数据库和共享模式方法的多租户应用程序。因此,根据这种方法,我在每个表中都有“Tenant_Id”列。那么,是否有办法自动附加where子句到每个查询中...


嗨,我这里有一个非常类似的问题,可能会有所帮助:https://dev59.com/7GHVa4cB1Zd3GeqPkjra - Alex KeySmith
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接