В моем проекте ASP.NET Core 5.0 я изменил
services.AddDbContext<SelfProgressDbContext>(...);
to
services.AddPooledDbContextFactory<SelfProgressDbContext>(...);
и теперь приложение не запускается. Подмножество ошибок, которые я получил:
Ошибка при проверке дескриптора службы «ServiceType: Microsoft.AspNetCore.Identity.UserManager
1[SelfProgress.Domain.User] Lifetime: Scoped ImplementationType: Microsoft.AspNetCore.Identity.UserManager
1[SelfProgress.Domain.User]»: невозможно разрешить службу для типа «SelfProgress.Orm.SelfProgressDbContext» при попытке активировать › «Microsoft.AspNetCore.Identity. EntityFrameworkCore.UserStore9[SelfProgress.Domain.User,Microsoft.AspNetCore.Identity.IdentityRole
1[System.Guid],SelfProgress.Orm.SelfProgressDbContext,System.Guid,Microsoft.AspNetCore.Identity.IdentityUserClaim1[System.Guid],Microsoft.AspNetCore.Identity.IdentityUserRole
1[System.Guid],Microsoft.AspNetCore.Identity.IdentityUserLogin1[System.Guid],Microsoft.AspNetCore.Identity.IdentityUserToken
1[System.Guid],Microsoft.AspNetCore.Identity .IdentityRoleClaim`1[System.Guid]]’.Ошибка при проверке дескриптора службы "ServiceType: Microsoft.AspNetCore.Identity.ISecurityStampValidator Lifetime: Scoped RegistrationType: Microsoft.AspNetCore.Identity.SecurityStampValidator
1[SelfProgress.Domain.User]': Unable to resolve service for type 'SelfProgress.Orm.SelfProgressDbContext' while attempting to activate 'Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore
9[SelfProgress.Domain.User,Microsoft.AspNetCore.Identity.IdentityRole1[System.Guid],SelfProgress.Orm.SelfProgressDbContext,System.Guid,Microsoft.AspNetCore.Identity.IdentityUserClaim
1[System.Guid],Microsoft. AspNetCore.Identity.IdentityUserRole1[System.Guid],Microsoft.AspNetCore.Identity.IdentityUserLogin
1[System.Guid],Microsoft.AspNetCore.Identity.IdentityUserToken1[System.Guid],Microsoft.AspNetCore.Identity.IdentityRoleClaim
1[System.Guid]]».Ошибка при проверке дескриптора службы «ServiceType: Microsoft.AspNetCore.Identity.RoleManager
1[Microsoft.AspNetCore.Identity.IdentityRole
1[System.Guid]] Срок службы: Scoped RegistrationType: Microsoft.AspNetCore.Identity.RoleManager1[Microsoft.AspNetCore.Identity.IdentityRole
1[System.Guid]]»: невозможно разрешить службу для типа «SelfProgress .Orm.SelfProgressDbContext» при попытке активировать «Microsoft.AspNetCore.Identity.EntityFrameworkCore.RoleStore5[Microsoft.AspNetCore.Identity.IdentityRole
1[System.Guid],SelfProgress.Orm.SelfProgressDbContext,System.Guid,Microsoft.AspNetCore.Identity.IdentityUserRole1[System.Guid],Microsoft.AspNetCore.Identity.IdentityRoleClaim
1[System.Guid]]».
Похоже, что классы хранилища Identity EF больше не могут разрешать контекст БД из-за новой регистрации фабрики контекста БД в пуле. Использование AddPooledDbContextFactory
кажется, что вы больше не можете напрямую разрешать контекст БД. Вместо этого вы должны разрешить фабрику, а затем вручную создать контекст БД.
Регистрация моей личности:
services
.AddIdentity<User, IdentityRole<Guid>>(...)
.AddEntityFrameworkStores<SelfProgressDbContext>()
.AddDefaultTokenProviders()
Есть ли способ заставить хранилища удостоверений по умолчанию разрешать контекст БД через новую фабрику?