【发布时间】:2013-12-24 23:48:40
【问题描述】:
我已将自定义字段添加到 ApplicationUser 类
我还创建了一个表单,用户可以通过该表单输入/编辑字段。
但是由于某种原因,我无法更新数据库中的字段。
[HttpPost]
[ActionName("Edit")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Manage(EditProfileViewModel model)
{
if (ModelState.IsValid)
{
// Get the current application user
var user = User.Identity.GetApplicationUser();
// Update the details
user.Name = new Name { First = model.FirstName, Last = model.LastName, Nickname = model.NickName };
user.Birthday = model.Birthdate;
// This is the part that doesn't work
var result = await UserManager.UpdateAsync(user);
// However, it always succeeds inspite of not updating the database
if (!result.Succeeded)
{
AddErrors(result);
}
}
return RedirectToAction("Manage");
}
我的问题类似于MVC5 ApplicationUser custom properties,但这似乎使用的是旧版本的 Identity,因为 IdentityManager 类似乎不存在。
谁能指导我如何更新数据库中的User 信息?
更新:
如果我在注册表单中包含所有字段,则所有值都存储在数据库中Users 表的新记录中的相应字段中。
我不知道要更改现有用户的字段(users 表中的行)。 UserManager.UpdateAsync(user) 不起作用。
另请注意,我的问题比 EntityFramework 更面向身份
【问题讨论】:
-
在更改 ApplicationUser 后,您是否检查过执行更新数据库? “名称”也是一个类引用,它应该在 OnModelCreating 中进行适当的序列化或映射。
-
不,没问题,数据库结构和
ApplicationUser一样。 name 字段是数据库中的一列(如 Name_First、Name_Last 和 Name_NickName)。我的问题是当我调用UserManager.UpdateAsync(user)时文件数据库没有更新为新值。我只想知道我应该如何更新 ApplicationUser(用户表) -
ApplicationUser 和 OnModelCreating 代码 sn-ps 有助于解决此问题。从您的评论来看,这似乎是 Name 属性及其部分的映射问题。
-
@jd4u 更新 ApplicationUser(Users 表) 我指的是表中的值,而不是表的结构。映射是正确的,并且正在使用注册表单。信息无法更新。
标签: asp.net-mvc asp.net-mvc-5 asp.net-identity