我有一个功能齐全的MVC4应用程序,该应用程序利用WCF端点和实体框架4.现在的问题是我需要使用以下设置使系统成为多租户: -
我正在实现一个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,反之亦然。这并不总是相同的结果,有时它会为两个网格返回相同的数据集。
我从未实施过这样的系统,因此目前非常感谢任何协助。