[英]Seeding users and roles in dbcontext in asp.net core: Circular dependency problem
我將dbcontext文件中的UserManager
和RoleManager
注入, 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.