4

我有一个要求,我需要为不同的用户提供不同的连接字符串。这个想法是在登录屏幕上提供usernameandpassword用作连接字符串的usernameand password。从而使应用程序为不同的用户使用不同的连接字符串,并在整个应用程序中使用这个连接字符串。

如何在 EF 4.1 中获取此设置

PS:我正在使用DbContext

4

3 回答 3

6

感谢凯文·荣汉斯

我就是这样做的。

在模型上下文类中

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());
于 2013-01-23T14:33:33.030 回答
4

您可以使用以下DbContext 构造函数,它接受连接字符串或名称作为参数。

public DbContext(
string nameOrConnectionString,
DbCompiledModel model
)
于 2013-01-23T13:37:18.960 回答
3

我不知道您的具体问题是哪一个,它与 MVC 无关,它仅适用于 EF。

如果我正确理解您想要做什么,您可能为每个用户设置了单独的数据库,但您只有一个用于登录的用户帐户信息的数据库

您可以使用该用户的特定连接字符串向该数据库添加一个字段,即用户登录数据库。然后,当您登录用户时,使用该数据库的 DbContext 并登录,然后获取 connectionString 的值并为登录用户的特定数据库生成新的 DbContext。

如果您需要更多帮助,请发表评论。

于 2013-01-23T13:55:07.430 回答