我有一个要求,我需要为不同的用户提供不同的连接字符串。这个想法是在登录屏幕上提供username
andpassword
用作连接字符串的username
and password
。从而使应用程序为不同的用户使用不同的连接字符串,并在整个应用程序中使用这个连接字符串。
如何在 EF 4.1 中获取此设置
PS:我正在使用DbContext
我有一个要求,我需要为不同的用户提供不同的连接字符串。这个想法是在登录屏幕上提供username
andpassword
用作连接字符串的username
and password
。从而使应用程序为不同的用户使用不同的连接字符串,并在整个应用程序中使用这个连接字符串。
如何在 EF 4.1 中获取此设置
PS:我正在使用DbContext
感谢凯文·荣汉斯
我就是这样做的。
在模型上下文类中
public class MyEntities : DbContext
{
public MyEntities (string connectionString)
: base(connectionString)
{
}
然后在登录控制器中
var dataConnection = WebConfigurationManager.OpenWebConfiguration("/").ConnectionStrings.ConnectionStrings["MyConnectionString"].ConnectionString;
dataConnection = dataConnection.Substring(0, dataConnection.LastIndexOf("\"")) + ";USER ID=" + userName +";Password=" + password + "\"";
Session["connectionString"] = dataConnection;
和从其他地方
var _db = new MyEntities (Session["connectionString"].ToString());
您可以使用以下DbContext 构造函数,它接受连接字符串或名称作为参数。
public DbContext(
string nameOrConnectionString,
DbCompiledModel model
)
我不知道您的具体问题是哪一个,它与 MVC 无关,它仅适用于 EF。
如果我正确理解您想要做什么,您可能为每个用户设置了单独的数据库,但您只有一个用于登录的用户帐户信息的数据库
您可以使用该用户的特定连接字符串向该数据库添加一个字段,即用户登录数据库。然后,当您登录用户时,使用该数据库的 DbContext 并登录,然后获取 connectionString 的值并为登录用户的特定数据库生成新的 DbContext。
如果您需要更多帮助,请发表评论。