Identity UserManager UpdateAsync不会将自定义字段保存到数据库

时间:2017-12-30 14:51:39

标签: asp.net-core asp.net-identity

我使用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

1 个答案:

答案 0 :(得分:0)

为了完整起见,我会发表评论作为答案。 设置FirstName和LastName时,GetUserAsync函数仍在运行。添加await到GetUserAsync方法会强制代码在继续之前等待异步函数完成。