asp.net Identity 2.0如何在运行时更改连接字符串/ DbContext?

时间:2014-04-28 21:26:12

标签: asp.net-mvc-5 asp.net-identity

我想在我的MVC5,asp.net identity 2.0 app中执行以下操作:

  1. 在运行时更改ApplicationDBContext使用的连接字符串。我将拥有众多客户端,每个客户端都有自己的SQL数据库。因此,在会话开始时,我需要能够指定所需的数据库连接。

  2. 我假设在ApplicationDbContext类中添加了重载:

    public static ApplicationDbContext Create(string connectionString)
    {
        return new ApplicationDbContext(connectionString);
    }
    
  3. 我也假设在Startup.Auth.cs中我需要修改此行以传入连接字符串。如果是这样,那么我在这里遇到麻烦。

    app.CreatePerOwinContext(ApplicationDbContext.Create);
    
  4. 我走的是正确的道路吗?我错过了什么吗?我基本上停留在这一点上。 TIA求助。

4 个答案:

答案 0 :(得分:1)

您只需更改ApplicationDbContext即可使用正确的连接字符串创建ApplicationDbContext实例。 Create基本上是一个ApplicationDbContext工厂方法。

答案 1 :(得分:0)

同样的问题。

我有

public ApplicationDbContext() : base(@"data source=.\SQLEXPRESS; initial catalog=mydata; integrated security=true")

以及其他几个可以给我相同结果的选项。 '硬编码'连接工作正常。但我需要设置initial catalog={somevariable},以便我可以从用户或AspNetUser获取{somevariable}给登录的用户。

代码示例非常有用。 "做这个"不是那么多。

答案 2 :(得分:0)

这只是修复使用构造函数初始化连接字符串。 只需创建一个带有连接字符串的新构造函数,并将其填入IdentityDbContext

 public class DbContext : IdentityDbContext<User>
{
    public DbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {

    }

    public DbContext(string ConnectionString) : base(ConnectionString)
    {

    }
}

答案 3 :(得分:0)

通常在使用外部SQL服务器而不是Visual Studio的SQL Express时发生。您所要做的就是按照以下步骤操作:

  1. 转到IdentityModels.cs。
  2. 在ApplicationDbContext类构造函数中,将连接字符串放在“DefaultConnString”(构造函数的第一个参数)的位置。
  3. 在服务器中创建一个名为“ApplicationDbContext”的空数据库。
  4. 现在运行您的应用程序。
  5. 应该解决这个问题。

相关问题