我们的要求是为ASP.Net网站建立一个多租户独立的数据库架构。对于每个租户,将有单独的数据库,并且根据UserId,在运行时应确定要连接的数据库。代码已经在生产中,我不愿意在每个表中添加一个TenantId列,并在.Net代码中更改类似的代码。有没有一个解决方案,我们可以在SQL Server中创建分区db和UI应该动态连接到相应的分区。截至目前,我想到的方法是缓存所有连接字符串,并根据租户,在运行时选择ConnString。
答案 0 :(得分:2)
根据您构建解决方案的程度,这可能会有点迟,但您可以查看以下框架:
您可以轻松做到的一件事是将多个客户合并到同一个数据库中,并将每个客户与不同的架构相关联;可以为每个用户标识分配一个模式,并为正确的模式分配足够的权限。根据您的情况,这可能有意义。您将使用Windows Azure / SQL Azure吗?
我询问SQL Azure的原因是因为配置新客户变得更加容易,因为它可以通过编程方式完成。
答案 1 :(得分:0)
如果您想使用给定的解决方案,则需要一个用户和主帐户的中央数据库。主帐户表将包含租户ID和连接字符串。 Users表将用户名,密码和FK保存到租户ID。
您登录中央数据库(始终是静态连接字符串)。您可以加入表并为主帐户建立连接字符串。