簡體   English   中英

在asp.net核心的dbcontext中播種用戶和角色:循環依賴問題

[英]Seeding users and roles in dbcontext in asp.net core: Circular dependency problem

我將dbcontext文件中的UserManagerRoleManager注入, RoleManager在首次創建數據庫時使用它們來添加一些用戶和角色。 當我運行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方法創建用戶嗎?

您的AppDbContext注入了依賴項UserManager ,注入了依賴項UserStore ,依賴項UserStore注入了依賴項DbContext 因此,您會遇到循環依賴問題。

解決方案是在DbContext之外創建您的用戶,因此不要將這些服務注入DbContext

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM