我正在尝试使用自己的SQL Server数据库来存储用户权限。
我使用我的上下文初始化UserStore(我也尝试使用默认构造函数)
UserManagerFactory = () => new UserManager<IdentityUser>(new UserStore<IdentityUser>(new DbEpicerieEntities()));
然后我创建了一个空数据库并为实体生成了数据模型。
然后我更改了我的连接的网络配置
<connectionStrings>
<add name="DefaultConnection" connectionString="metadata=res://*/Models.EpicerieModel.csdl|res://*/Models.EpicerieModel.ssdl|res://*/Models.EpicerieModel.msl;provider=System.Data.SqlClient;provider connection string="data source=localhost;initial catalog=DbEpicerie;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
但它不起作用。如果我在
之后尝试注册用户 IdentityResult result = await UserManager.CreateAsync(user);
它会调用
protected override void Dispose(bool disposing)
{
if (disposing)
{
UserManager.Dispose();
}
base.Dispose(disposing);
}
我尝试使用已经制作的表格的数据库,但我有相同的结果。
我尝试更改DefaultConnection
的连接名称,但没有成功。
我尝试了question上的建议,并将DbContext
更改为IdentityDbContext<IdentityUser>
public partial class DbEpicerieEntities : IdentityDbContext<IdentityUser>
{
public DbEpicerieEntities()
: base("DefaultConnection")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
}
但我有同样的问题。
我不知道Web配置中的EntityFramework设置是否可能是问题
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
为什么它不起作用的任何想法?
谢谢
答案 0 :(得分:2)
使用以下连接字符串解决了我的问题:
<add name="DefaultConnection" connectionString="Data Source=localhost;Initial Catalog=Epicerie;Integrated Security=True;" providerName="System.Data.SqlClient" />
答案 1 :(得分:1)
您可以发布 MyContext 课程吗?您可以尝试更改第一个代码段,以使用 DbEpicerieEntities 类而不是 MyContext 类。
UserManagerFactory = () => new UserManager<IdentityUser>(new UserStore<IdentityUser>(new DbEpicerieEntities()));