使用多个连接字符串asp.net MVC

时间:2016-07-01 05:29:00

标签: asp.net-mvc

我正在使用MVC创建asp.net MVC应用程序。我有5个用户,但数据库是相同的,但我们创建该数据库的副本,如dum001,dum002 ....等等。那么,是否可以在web.config中设置五个连接字符串甚至更多?当用户登录时,我将其重定向到他的数据库,这样他就可以使用他的数据库了。

1 个答案:

答案 0 :(得分:2)

您可以在web.config中创建任意数量的连接字符串。

根据您用于访问数据库的数据访问层,您可以采用多种方法根据用户切换连接字符串。

选项1:最佳

不是为每个用户存储连接字符串,而是只将一个连接字符串存储到“主”数据库。此主数据库将负责了解用户,会话和用户特定设置等内容,例如哪些数据库是他们的。

当用户登录时,主数据库可用于用户查找,并将连接字符串作为该用户的会话变量提供给MVC应用程序。然后,MVC应用程序将使用此连接字符串数据通过数据访问层(DAL)动态创建数据库连接。

您需要缓存该设置以防止主数据库级别出现瓶颈。当然,这都是服务器端。切勿将连接线穿过电线暴露给客户端。

这是可配置的,可管理的,也是可取的。

选项2:硬编码的Hacky

PS。这不是好习惯,会烧伤你。

如果您只有5个用户,并且将只有5个用户,并且每个用户始终拥有相同的用户名,您可以将其用户名硬编码为其连接字符串的前缀。像:

鉴于username = ryancdotnet 鉴于username = armardip

<connectionStrings>
    <add name="ryancdotnetConnString" connectionString="server=ServerName;database=dum001;uid=username;password=pwd;"/>
    <add name="armardipConnString" connectionString="server=ServerName;database=dum002;uid=username;password=pwd;"/>
</connectionStrings>

然后,您仍将根据登录的人动态实例化DAL连接字符串。

通用示例

using System.Configuration
[...]
string connectionString = System.Configuration.ConfigurationManager.
ConnectionStrings[username + "ConnString"].ConnectionString;

EntityFramework示例

//where MyDbContext is derived from DbContext (EntityFramework)
public void InitializeDbContext(string curUsername)
{
    myDbContext = new MyDbContext(curUsername + "ConnString");
}

希望这可以帮助你!