我使用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; }
}
访问UserManager
和RoleManager
。
答案 0 :(得分:0)
您应该更改Startup.Auth.cs
或初始化UserManager
;
UserManagerFactory = () => new UserManager<IdentityUser>(new IdentityDbContext<IdentityUser>());
到
UserManagerFactory = () => new UserManager<IdentityUser>(new IdentityContext());