我使用ApplicationUser设置了使用AspNet Identity设置的.NET Core 2 MVC项目:
public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
在此操作中,我从表单中获取FirstName和LastName,并希望将其保存到数据库中:
private readonly UserManager<ApplicationUser> _userManager;
...
var user = _userManager.GetUserAsync(User).Result;
user.FirstName = model.FirstName;
user.LastName = model.LastName;
var result = _userManager.UpdateAsync(user).Result;
除了使用_userManager.UpdateAsync(user)
保存自定义字段外,一切正常(更新密码,重置密码等)。返回的result.Succeeded始终为true,但更改未保存到数据库中。
我在这里做错了什么?
修改
调试控制台为UpdateAsync
输出以下更新查询,该查询缺少自定义字段:
UPDATE [AspNetUsers] SET [AccessFailedCount] = @p0, [ConcurrencyStamp] = @p1, [Email] = @p2, [EmailConfirmed] = @p3, [FirstName] = @p4, [LastName] = @p5, [LockoutEnabled] = @p6, [LockoutEnd] = @p7, [NormalizedEmail] = @p8, [NormalizedUserName] = @p9, [PasswordHash] = @p10, [PhoneNumber] = @p11, [PhoneNumberConfirmed] = @p12, [SecurityStamp] = @p13, [TwoFactorEnabled] = @p14, [UserName] = @p15
答案 0 :(得分:0)
为了完整起见,我会发表评论作为答案。 设置FirstName和LastName时,GetUserAsync函数仍在运行。添加await到GetUserAsync方法会强制代码在继续之前等待异步函数完成。