在混合多租户解决方案中动态连接到不同的数据库

时间:2011-05-05 15:55:33

标签: asp.net linq-to-sql asp.net-mvc-2 multi-tenant

我正在研究多租户和多实例方法,并选择了混合方法。

我保留了ASP.Net MVC 2应用程序的单个实例,但克隆了每个客户端的数据库结构。我正在使用LINQ to SQL。

现在,我有两个实例,所以只有一个连接字符串正在工作。

我打算为许多客户扩展它。

我可以编写代码来创建数据库结构的克隆,创建数据库用户并在新客户端注册时提供权限。我还将所有这些细节(数据库名称,数据库用户,允许的应用程序用户)保存在表格中。

但是如何让应用程序根据登录的人使用不同的数据库?

我甚至无法弄清楚我应该采取的方法来做到这一点。我应该以编程方式将连接字符串添加到web.config吗?还有另一种方法吗?

2 个答案:

答案 0 :(得分:2)

DataContext的一个构造函数接受连接字符串。您可以根据特定请求的用户组合此字符串。

这将覆盖默认连接。

答案 1 :(得分:0)

检查DataContext的构造函数重载,有一个接受连接字符串。您只需要针对登录用户映射字符串属性。

请不要以编程方式将每个用户的连接字符串添加到web.config,请考虑可伸缩性!!!