我想在我的MVC5,asp.net identity 2.0 app中执行以下操作:
在运行时更改ApplicationDBContext使用的连接字符串。我将拥有众多客户端,每个客户端都有自己的SQL数据库。因此,在会话开始时,我需要能够指定所需的数据库连接。
我假设在ApplicationDbContext类中添加了重载:
public static ApplicationDbContext Create(string connectionString)
{
return new ApplicationDbContext(connectionString);
}
我也假设在Startup.Auth.cs中我需要修改此行以传入连接字符串。如果是这样,那么我在这里遇到麻烦。
app.CreatePerOwinContext(ApplicationDbContext.Create);
我走的是正确的道路吗?我错过了什么吗?我基本上停留在这一点上。 TIA求助。
答案 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时发生。您所要做的就是按照以下步骤操作:
应该解决这个问题。