通过将新的ApplicationUser附加到上下文来更新现有的Identity ApplicationUser属性

时间:2016-09-20 13:54:18

标签: c# asp.net-mvc asp.net-identity

我正在尝试通过添加新的“非核心”属性来更新我现有的ApplicationUser,例如FirstName,LastName。我已经通过ApplicationUser: IdentityUser扩展了这些属性,这总体上很好。

现在,我尝试做的是在我的控制器中创建一个新的ApplicationUser,然后将其传递给存储库以更新db中存在的用户,如:

public ActionResult Members_Update(MemberViewModel mvm){
    ApplicationUser user = new ApplicationUser();
    user.FirstName = mvm.FirstName;
    user.LastName = mvm.LastName;
    _repo.UpdateApplicationUser(user);
}

在存储库(构造为_context = new ApplicationDbContext();)中,我执行:

public void UpdateAppicationUser(ApplicationUser updatedUser){
    _context.Users.Attach(updatedUser);
    var entry = _context.Entry(updatedUser);
  ...

然后我继续通过

entry.Property(x => x.AccessFailedCount).IsModified = false;
entry.Property(x => x.EmailConfirmed).IsModified = false;
entry.Property(x => x.LockoutEnabled).IsModified = false;
// same for rest of core identity properties
_context.SaveChanges();
}

我正在尝试基于this pattern执行此操作,因此db只被命中一次(并且整体看起来像是一种最佳方式),但似乎有一些Identity行为阻止了这一点。在Attach之后,条目只是替换原始用户而不是修改(因此,例如UserName最终为空,这自然是必需的)。

0 个答案:

没有答案