尝试通过WCF实现具有不同数据库的多租户MVC4应用程序

时间:2015-12-03 12:12:46

标签: c# wcf asp.net-mvc-4 multi-tenant

我有一个功能齐全的MVC4应用程序,该应用程序利用WCF端点和实体框架4.现在的问题是我需要使用以下设置使系统成为多租户: -

  • 1个MVC应用程序主机
  • 1 WCF服务层
  • 单独的数据库(每个租户1个数据库,所有数据库都具有相同的架构)

我正在实现一个Generic Repository类,我可以在其中使用在我的Principal对象上设置的属性(connectionName),该属性与config中的连接字符串名称相关。我可以使用UnityHelper类访问此属性。这样做如下: -

    private Entities Context
    {
        get
        {
           string connectionString = _Config.GetString(Helpers.UnityHelper.ConnectionName);
           var entityConn = new EntityConnection
           {
              ConnectionString = connectionString
           };
           _Context = new Entities(entityConn);

           return _Context;
        }
    }

如果我同时以两个单独的租户(不同的浏览器)登录并在两个实例上刷新相同的网格,这似乎正在工作但是会失效。我已更新我的WCF服务以具有以下行为: -

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerSession)]

我在以下网站找到了上述解决方案,我认为这正是I was looking for mode = Per Call and Concurrency = Single

然而,它似乎将值返回到tenantA的网格中,我希望在网格中看到tenantB,反之亦然。这并不总是相同的结果,有时它会为两个网格返回相同的数据集。

我从未实施过这样的系统,因此目前非常感谢任何协助。

0 个答案:

没有答案