我有一个要求,我需要为不同的用户提供不同的连接字符串。我们的想法是让登录屏幕上提供的username
和password
用作连接字符串的username
和password
。从而使应用程序为不同的用户使用不同的连接字符串,并在整个应用程序中使用此连接字符串。
如何在EF 4.1中进行此设置
PS:我正在使用DbContext
答案 0 :(得分:5)
感谢Kevin Junghans
我就是这样做的。
在模型上下文类
中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());
答案 1 :(得分:4)
您可以使用以下DbContext constructor接受连接字符串或名称作为参数。
public DbContext(
string nameOrConnectionString,
DbCompiledModel model
)
答案 2 :(得分:3)
我不知道哪个特别是你的问题,它不是关于MVC它只适用于EF。
如果我理解你想做什么,你可能为每个用户都有separeted数据库,但你只有一个数据库用于登录的用户帐户信息
您可以向该数据库添加一个字段,即用户登录数据库,以及该用户的特定connectionString。然后,当您登录用户时,使用DbContext进行该数据库和登录,然后获取connectionString的值,并为用户所在的特定数据库生成新的DbContext。
如果您需要更多帮助,请发表评论。