AddEntityFrameworkStores 在 AddIdentity 中究竟做了什么?

What does AddEntityFrameworkStores exactly do in AddIdentity?

我最近需要为我的 .net core 5 应用程序生成电子邮件确认令牌,在研究过程中我发现我需要在启动时注册“AddIdentity”。

services.AddIdentity<AuthenticatedUser, IdentityRole>(options =>
            {
                options.User.RequireUniqueEmail = false;
            }).
            AddEntityFrameworkStores<SchoolDataContext>().
            AddDefaultTokenProviders();

如果我删除“AddEntityFrameworkStores”部分,则应用程序会构建并启动,但会在运行时崩溃并出现类似 following:

中的错误

错误:

System.AggregateException: 'Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: Microsoft.AspNetCore.Identity.IUserClaimsPrincipalFactory1[WebApp1.Areas.Identity.Data.ApplicationUser] Lifetime: Scoped ImplementationType: WebApp1.Areas.Identity.Data.AdditionalUserClaimsPrincipalFactory': Unable to resolve service for type 'Microsoft.AspNetCore.Identity.UserManager1[WebApp1.Areas.Identity.Data.ApplicationUser]' while attempting to activate 'WebApp1.Areas.Identity.Data.AdditionalUserClaimsPrincipalFactory'.)'

我的问题是为什么我们甚至需要注册“AddEntityFrameworkStores”,我找不到它的良好文档或源代码实现。难道我们不能避免使用它,或者知道为什么我们首先需要它吗?

这是source code.

基本上它添加了默认商店:UserStore 和 RoleStore。如果您不使用它,则必须自己为 Stores 提供 AddUserStore 和 AddRoleStore。