Fala pessoal, tudo bem?!
Este tópico é apenas para contribuir com um erro que tomei ao tentar criar a role utilizando o RoleManager no curso .NET 5 e Identity: autenticando e autorizando usuários.
Ao tentar executar a linha de código abaixo:
_ = _roleManager.CreateAsync(new IdentityRole("admin")).Result
Recebia o seguinte erro:
System.AggregateException: 'One or more errors occurred. (A second operation was started on this context instance before a previous operation completed. This is usually caused by different threads concurrently using the same instance of DbContext. For more information on how to avoid threading issues with DbContext, see https://go.microsoft.com/fwlink/?linkid=2097913.)'
Ao pesquisar um pouco entendi que se tratava do ciclo de vida da aplicaçã, havia uma conexão de DBContext aberta e antes desse ciclo ser finalizado outra conexção de RoleManager estava concorrendo (Me corrijam se não for este o entendimento).
Para solucionar essa questão, fiz uma alteração na inicialização do AddDbContext conforme abaixo:
builder.Services.AddDbContext<UserDbContext>(options => {
options.UseMySQL(builder.Configuration.GetConnectionString("UsuarioConnection"));
},ServiceLifetime.Transient);
após a inserção das options inseri o "ServiceLifetime" como "Transient", isso eliminou a concorrência com o RoleManager, umas vez que ele abre uma nova instância para conexão.
Espero que ajude caso alguém passe por este mesmo problema e se há uma maneira melhor e mais adequada, por favor, peço que compartilhem aqui também para que possamos continuar evoluindo.
Abraço!