gpt4 book ai didi

c# - 在 asp.net core : Circular dependency problem 的 dbcontext 中播种用户和角色

转载 作者:行者123 更新时间:2023-12-04 01:44:10 24 4
gpt4 key购买 nike

我正在注入(inject) UserManagerRoleManager在 dbcontext 文件中使用它们在首次创建数据库时添加一些用户和角色。当我运行 update-database命令,我收到以下错误:

A circular dependency was detected for the service of type '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注入(inject)依赖 UserManager注入(inject)依赖 UserStore需要注入(inject)依赖 DbContext .因此,您会遇到循环依赖问题。

解决方案是在 DbContext 之外创建用户,因此您不会将这些服务注入(inject) DbContext .

关于c# - 在 asp.net core : Circular dependency problem 的 dbcontext 中播种用户和角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55982030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com