在ASP.NET核心中播种用户和DBContext中的角色:循环依赖性问题



i在dbcontext文件中注入UserManagerRoleManager,将它们用于首次创建数据库时添加某些用户和角色。运行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

相关内容

  • 没有找到相关文章

最新更新