Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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
C# 具有多数据库设置的Web应用程序-ASP.NET MVC_C#_Sql_Asp.net Mvc - Fatal编程技术网

C# 具有多数据库设置的Web应用程序-ASP.NET MVC

C# 具有多数据库设置的Web应用程序-ASP.NET MVC,c#,sql,asp.net-mvc,C#,Sql,Asp.net Mvc,我正在构建一个ASP.NET MVC应用程序,它需要为每个客户机(特别是分支)建立单独的数据库 在登录页面中,用户需要提供登录凭据和分支机构名称。提供的分支名称将决定是连接到数据库1还是数据库2 前 分支1,4,5应连接到db1 分支2、3、6、7应连接到db2 分支8、9、10应连接到db3 我应该实现哪种最适合此场景的方法 以下是我的想法(注意:我需要用于检索某些数据的分支名称): 1.分离包含用户名、密码、分支、用户应连接的数据库名称的数据库,然后将分支和数据库名称存储在会话/cook

我正在构建一个ASP.NET MVC应用程序,它需要为每个客户机(特别是分支)建立单独的数据库

在登录页面中,用户需要提供登录凭据和分支机构名称。提供的分支名称将决定是连接到数据库1还是数据库2

  • 分支1,4,5应连接到db1
  • 分支2、3、6、7应连接到db2
  • 分支8、9、10应连接到db3
我应该实现哪种最适合此场景的方法

以下是我的想法(注意:我需要用于检索某些数据的分支名称):

1.分离包含用户名、密码、分支、用户应连接的数据库名称的数据库,然后将分支和数据库名称存储在会话/cookie中[但如何从单独项目上的数据访问层访问会话/cookie]

2.将数据库列表和分支子列表存储在
xml
文件中,检索它,然后将其保存在session/cookie上[同样,如何从单独项目的数据访问层访问session/cookie]

3.包含用户名、密码、分支、用户应连接的数据库名称的单独数据库,将分支和数据库名称存储在预先添加的AppSetting密钥中

<add key="Database" value="" /> <add key="Branch" value="" />

web.config
中,然后使用
ConfigurationManager
访问其值。这需要根据分支在运行时修改
web.config
文件[这是一个好方法吗?]


如有任何建议和意见,我们将不胜感激。

为用户帐户及其到数据库的映射建立一个中央/主数据库

选项1:如果您有大量的分支机构/客户,并且您希望入职过程是无缝的,那么这是一个理想选择。在系统中添加新的分支/客户机时,还需要动态创建新数据库。那么只有这个解决方案才值得。如果您认为这太多,请使用选项2

选项3:易于设置,但您需要小心地跨环境管理web.config文件的部署


顺便说一句,您可以从单独的项目访问会话。

这可能取决于列表更新的方式和频率,以及对新连接的响应程度。如果经常发生这种情况,则需要一个中央数据库,带有某种编程接口。如果不是很多,那么服务器上的配置文件可能就足够了。同一服务器上的不同数据库或不同服务器上的不同数据库?同一服务器上的差异数据库。该列表可能每月更新一次或每2次。感谢您的输入。当您说“管理web.config的部署”时,在运行时修改web.config文件时是否会出现任何问题/冲突?如果您修改web.config,应用程序将重新启动。这就像重新启动应用程序池一样。