我有一个问题,无法将用户更改保存到数据库中,比如更改人的名字。我正在使用IdentityModel,这是在使用个人身份验证的新VS2013 Web项目中自动创建的。不幸的是,该模板不允许您更改任何用户信息,除了更改角色。我通过谷歌搜索,没有找到太多信息。是否有人使用基本身份代码实现了更新?
以下是我找到的最相关内容:
我尝试将默认模板合并,但没有成功。我刚开始使用Identity,可能是我的理解出了问题。
var updatedUser = new ApplicationUser
{
Id = model.UserId,
UserName = model.UserName,
CustomerId = model.CustomerId,
Email = model.EmailAddress,
FirstName = model.FirstName,
LastName = model.LastName,
PhoneNumber = model.PhoneNumber,
};
...
var result = await UserManager.UpdateAsync(updatedUser);
我的UserManager是这样创建的:
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
我在浏览器中收到以下错误:
“附加类型为'ApplicationUser'的实体失败,因为另一个具有相同主键值的实体已经存在。当使用“Attach”方法或将实体状态设置为“未更改”或“已修改”时,如果图表中的任何实体具有冲突的键值,则可能会发生这种情况。这可能是因为某些实体是新的,并且尚未收到数据库生成的键值。在这种情况下,请使用“Add”方法或“Added”实体状态来跟踪图表,然后根据需要将非新实体的状态设置为“未更改”或“已修改”。谢谢。