我正在使用 EF5 开发 ASP MVC 应用程序。我们正在尝试更新一个用户对象,其中包含一个权限列表、组和角色对象的外键。我们面临的问题是,虽然权限、组、用户密码等都得到了更新,但角色却没有。我们已经在 SO 上搜索了几个小时,但似乎无法实施有效的解决方案。当尝试更新我们的用户时,角色会正确传递,但不会在数据库中更新。
下面,您可以找到我们编辑页面的帖子。我们已经尝试将它附加到我们的数据库(这是数据库上下文),创建一个新的上下文以将其附加到和其他几个答案都无济于事。简而言之,我们很困惑,不知道如何将更新后的角色传递给我们的数据库。非常感谢您的阅读并希望回复。
// POST: /User/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(User user, string[] selectedPermissions, string[] selectedGroups)
{
var userInDb = db.Users.Find(user.Id);
if (selectedPermissions != null || selectedGroups != null)
{
user.Permissions = userInDb.Permissions;
user.Groups = userInDb.Groups;
}
if (user.Username != null && user.Password != null && user.Role != null && user.Person != null)
{
user.Person = db.People.Find(user.Person.IdCardNumber);
user.Person = db.People.Find(user.Person.IdCardNumber);
user.Role = db.Roles.Find(user.Role.Id);
SavePerms(selectedPermissions, user);
SaveGroups(selectedGroups, user);
db.Entry(userInDb).CurrentValues.SetValues(user);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(user);
}