我正在使用MVC创建asp.net MVC应用程序。我有5个用户,但数据库是相同的,但我们创建该数据库的副本,如dum001,dum002 ....等等。那么,是否可以在web.config中设置五个连接字符串甚至更多?当用户登录时,我将其重定向到他的数据库,这样他就可以使用他的数据库了。
答案 0 :(得分:2)
您可以在web.config中创建任意数量的连接字符串。
根据您用于访问数据库的数据访问层,您可以采用多种方法根据用户切换连接字符串。
不是为每个用户存储连接字符串,而是只将一个连接字符串存储到“主”数据库。此主数据库将负责了解用户,会话和用户特定设置等内容,例如哪些数据库是他们的。
当用户登录时,主数据库可用于用户查找,并将连接字符串作为该用户的会话变量提供给MVC应用程序。然后,MVC应用程序将使用此连接字符串数据通过数据访问层(DAL)动态创建数据库连接。
您需要缓存该设置以防止主数据库级别出现瓶颈。当然,这都是服务器端。切勿将连接线穿过电线暴露给客户端。
这是可配置的,可管理的,也是可取的。
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;
//where MyDbContext is derived from DbContext (EntityFramework)
public void InitializeDbContext(string curUsername)
{
myDbContext = new MyDbContext(curUsername + "ConnString");
}
希望这可以帮助你!