【发布时间】:2014-05-15 09:56:41
【问题描述】:
将用户更改保存到数据库时遇到问题,例如更改人名。我正在使用使用个人身份验证在新的 VS2013 Web 项目中自动创建的 IdentityModel。遗憾的是,除了更改角色之外,该模板不允许您更改任何用户信息。我正在通过谷歌四处寻找,我没有找到太多。有人使用基本身份代码实现更新吗?
这是我找到的最接近的东西:
Updating user data - Asp.net Identity
我没有成功合并默认模板。我这周刚开始使用 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”的实体失败,因为同一类型的另一个实体已经具有相同的主键值。如果图中的任何实体具有冲突的键值,则在使用“附加”方法或将实体的状态设置为“未更改”或“已修改”时,可能会发生这种情况。这可能是因为某些实体是新实体,尚未收到数据库生成的键值。在这种情况下,使用 'Add' 方法或 'Added' 实体状态来跟踪图形,然后将非新实体的状态适当地设置为 'Unchanged' 或 'Modified'
谢谢
【问题讨论】:
-
如果您确切地提到您遇到问题的原因可能会有所帮助...您尝试了什么?什么没用?错误是什么?结果如何?尽可能具体。
-
在我的操作中,我正在创建一个 ApplicationUser,并填写了 ID 和其他字段。然后我打电话: