Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在混合多租户解决方案中动态连接到不同的数据库_Asp.net_Linq To Sql_Asp.net Mvc 2_Multi Tenant - Fatal编程技术网

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

Asp.net 在混合多租户解决方案中动态连接到不同的数据库,asp.net,linq-to-sql,asp.net-mvc-2,multi-tenant,Asp.net,Linq To Sql,Asp.net Mvc 2,Multi Tenant,我正在研究多租户和多实例方法,并选择了一种混合方法 我保留了ASP.NETMVC2应用程序的一个实例,但克隆了每个客户端的数据库结构。我正在使用LINQtoSQL 现在,我有两个的一个实例,所以只有一个连接字符串在工作 我计划为许多客户扩展它 我可以编写代码来创建数据库结构的克隆,创建db用户,并在新客户端注册时授予权限。我还将在一个表中保存所有这些详细信息(数据库名称、数据库用户、允许的应用程序用户) 但是,我如何让应用程序根据登录用户使用不同的数据库呢 我甚至想不出我应该采取什么方法来做这件

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

我保留了ASP.NETMVC2应用程序的一个实例,但克隆了每个客户端的数据库结构。我正在使用LINQtoSQL

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

我计划为许多客户扩展它

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

但是,我如何让应用程序根据登录用户使用不同的数据库呢


我甚至想不出我应该采取什么方法来做这件事。我是否应该以编程方式将连接字符串添加到web.config?还有其他方法吗?

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


这将覆盖默认连接。

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


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

嗨。因此,我可以查询users表,并根据登录的用户,构造或获取连接字符串,并在创建DataContext实例时简单地传递它。这么简单?没错。DataContext将与具有相同结构且没有问题的不同数据库通信。通过发送在连接字符串中指定的默认目录,您可以切换到不同的数据库,只要它们具有相同的结构。否。不,我想的更像是每个客户一个。每个客户端可能有N个用户在使用其下的应用程序。因此,每个客户端1个连接字符串(即该客户端下的N个用户)。。我所说的客户端指的是一个组织,它可以为N个用户购买许可证。好的,这同样适用于,将配置文件用于配置,而不是用于数据存储。