Заполнение пользователей и ролей в dbcontext в ядре asp.net: проблема круговой зависимости - PullRequest
2 голосов
/ 04 мая 2019

Я ввожу UserManager и RoleManager в файл dbcontext, чтобы использовать их для добавления некоторых пользователей и ролей при первом создании базы данных. Когда я запускаю команду update-database, я получаю следующую ошибку:

Обнаружена циклическая зависимость для службы типа 'App.Models.AppDbContext'. App.Models.AppDbContext -> Microsoft.AspNetCore.Identity.UserManager -> Microsoft.AspNetCore.Identity.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?

1 Ответ

4 голосов
/ 04 мая 2019

Ваш AppDbContext вводится с зависимостью UserManager, которая вводится с зависимостью UserStore, которую необходимо ввести с зависимостью DbContext.Поэтому возникает проблема циклической зависимости.

Решение состоит в том, чтобы создавать пользователей за пределами DbContext, поэтому вы не внедряете эти службы в DbContext.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...