私は EF5 で ASP MVC アプリケーションに取り組んでいます。Role オブジェクトの権限、グループ、および外部キーのリストを含む User オブジェクトを更新しようとしています。私たちが直面している問題は、アクセス許可、グループ、ユーザー パスワードなどはすべて更新されますが、ロールは更新されないことです。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);
}