出现该问题的可能情况是因为 ASP.NET Core Identity 默认情况下会自动为每个用户创建一个角色。如果用户太多,这可能会导致角色表中有太多重复的角色。
为了解决这个问题,我们可以通过在 Startup.cs 中配置 IdentityOptions 来关闭自动创建用户角色的功能。在 ConfigureServices 方法中添加以下代码:
services.AddIdentity(options =>
{
options.User.RequireUniqueEmail = true;
// 禁用用户自动创建角色的功能
options.AutoGenerateUserRoles = false;
})
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
然后在 PM 中运行 add-migration 命令,即可成功生成迁移文件。
PM> add-migration migration_name
注意:如果有已经使用了自动创建角色的代码,则需要修改代码手动为用户设置角色。
if (!await userManager.IsInRoleAsync(user, "role_name"))
{
await userManager.AddToRoleAsync(user, "role_name");
}
上一篇:ASP.NETCoreWebAPI-如何将自动生成的密码发送到通知电子邮件的正文中。
下一篇:ASP.NETCoreWebAPI-如何解决AutoMapper.AutoMapperMappingException:缺少类型映射配置或不支持的映射