asp.net-identity-3 - 使用默认 IdentityUser 创建异步用户从 .NetCore2.2 升级到 .NetCore3.0 后似乎不起作用
问题描述
工作实现 我已将 identityUser 的默认类型更改为整数和配置的其余部分,以使其再次正常工作。
启动配置
Changed: identityBuilder = new IdentityBuilder(identityBuilder.UserType, typeof(IdentityRole<int>), identityBuilder.Services);
自定义用户类
Changed: public class AppUser : IdentityUser<int>
应用程序数据库上下文
Changed: public class ApplicationDbContext : IdentityDbContext<AppUser, IdentityRole<int>, int, IdentityUserClaim<int>, IdentityUserRole<int>, IdentityUserLogin<int>,IdentityRoleClaim<int>, IdentityUserToken<int>>
旧实现 Repository 实现中的 identityResult 变量返回 null 并引发以下异常:
System.InvalidOperationException:无法跟踪“AppUser”类型的实体,因为主键属性“Id”为空
启动配置
var identityBuilder = services.AddIdentityCore<AppUser>(o =>
{
// configure identity options
// Options are intentionally let out
});
identityBuilder = new IdentityBuilder(identityBuilder.UserType, typeof(IdentityRole), identityBuilder.Services);
identityBuilder.AddEntityFrameworkStores<ApplicationDbContext>();
自定义用户类
public class AppUser : IdentityUser
{
// Extended Properties
public string FirstName { get; set; }
public string LastName { get; set; }
}
应用程序数据库上下文
public class ApplicationDbContext : IdentityDbContext<AppUser>
存储库
public async Task<CreateUserResponse> CreateUser(User user, string password)
{
var appUser = _mapper.Map<AppUser>(user);
var identityResult = await _userManager.CreateAsync(appUser, password);
return new CreateUserResponse(appUser.Id.ToString(), identityResult.Succeeded, identityResult.Succeeded ? null : identityResult.Errors.Select(e => new Error(e.Code, e.Description)));
}
解决方案
推荐阅读
- c# - 如何将实例化对象从一种方法使用到另一种方法?
- javascript - 如何通过 CDN 链接使用 Reactstrap
- bash - AIX:解析 XML 并将元素值打印到控制台
- swift - swift中带有字符串值的枚举int
- java - 如何从字符串属性自动映射到给定类型的对象?
- java - 将时间戳四舍五入到最接近的 10 秒的最有效方法
- html - SCSS 样式不起作用...Z-Index 问题?
- python - Python 函数不引用参数
- javascript - 如何将树结构的键复制到具有其他名称的键或将其重命名为其他名称?
- javascript - Node.js pg-promise Azure 函数写入 Postgres (timescaleDB)