ASP.NET标识 - 修改默认连接字符串名称

时间:2017-12-09 18:42:38

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

我使用EF6和Identity,并配置2个单独的连接字符串:

<connectionStrings>
    <add name="AppDbContext" providerName="System.Data.SqlClient" connectionString="Server=localhost;Database=db_entity;Trusted_Connection=True;" />
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Server=localhost;Database=db_identity;Trusted_Connection=True;" />
</connectionStrings>

工作正常,我的实体存储在db_entity中,用户信息(只有5个默认的aspnet身份表)存储在db_identity中。 my database

我可以看到AspNet Identity正在使用DefaultConnection,我想修改该名称。我尝试创建这个自定义类(我以前没有使用任何自定义类来识别身份):

public class IdentityContext : IdentityDbContext<IdentityUser>
{
        public IdentityContext() : base("IdentityContext")
        {

        }

        public static IdentityContext Create()
        {
            return new IdentityContext();
        }
}

web.config 中的DefaultConnection更改为IdentityContext。 但它不起作用,当我运行应用程序时,它会引发异常:

SqlException:无法附加文件&#39; C:\ Users \ thang \ Documents \ GitHub \ GSSPHN \ EmptyWeb \ App_Data \ DefaultConnection.mdf&#39;作为数据库&#39; DefaultConnection&#39;。

它还在寻找我已更改为DefaultConnection的{​​{1}}。如何修改该连接名称?

已解决:我修改了该自定义类:

IdentityContext

现在,我可以从指向我指定的连接名称的public class IdentityContext : IdentityDbContext<IdentityUser> { public IdentityContext() : base("IdentityContext") { UserManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(this)); RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(this)); } public UserManager<IdentityUser> UserManager { get; set; } public RoleManager<IdentityRole> RoleManager { get; set; } } 访问UserManagerRoleManager

1 个答案:

答案 0 :(得分:0)

您应该更改Startup.Auth.cs或初始化UserManager;

的地方
UserManagerFactory = () => new UserManager<IdentityUser>(new IdentityDbContext<IdentityUser>()); 

UserManagerFactory = () => new UserManager<IdentityUser>(new IdentityContext());