i在dbcontext文件中注入UserManager
和RoleManager
,将它们用于首次创建数据库时添加某些用户和角色。运行update-database
命令时,我会收到以下错误:
为" App.Models.appdbContext"类型的服务检测到了循环依赖性。 app.models.appdbcontext-> Microsoft.aspnetcore.Identity.usermanager-> Microsoft.aspnetcore.inderity.Isentity.iuserstore
以下是dbcontext
:
public class AppDbContext : IdentityDbContext
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly RoleManager<IdentityRole> _roleManager;
public AppDbContext(
DbContextOptions<SynergyDbContext> options,
UserManager<ApplicationUser> userManager,
RoleManager<IdentityRole> roleManager
) : base(options) {
_userManager = userManager;
_roleManager = roleManager;
}
modelBuilder.Entity<IdentityRole>().HasData(new IdentityRole { Name = "Admin", NormalizedName = "Admin".ToUpper() });
ApplicationUser user = new ApplicationUser
{
//implementation details
};
IdentityResult result = _userManager.CreateAsync(user, "password").Result;
if (result.Succeeded) _userManager.AddToRoleAsync(user, "Admin").Wait();
base.OnModelCreating(modelBuilder);
}
有什么想法吗?我应该使用HasData
方法创建用户吗?
您的AppDbContext
注入依赖项UserManager
,并注入依赖关系UserStore
,需要注入依赖关系DbContext
。因此,您会得到循环依赖性问题。
解决方案是在DbContext
之外创建您的用户,因此您不会将这些服务注入DbContext
。