Допустим, у меня есть таблица Person
, таблица Role
с таблицей трелей PersonRoles
, связывающая их как много со многими.
Я создаю нового человека и назначаю ему 2 роли (роль 1, роль 3).
Затем я хочу отредактировать этого человека; поэтому я получаю их данные и связываю их роли с флажками. Я изменяю значения (отмените выбор роли 1 и выберите роль 2 вместо этого), а затем отправляю эти данные обратно через модель представления.
Могу ли я тогда заставить Entity Framework обновить эти роли для меня, как при удалении записи в PersonRoles
для роли 1, а затем добавить новую запись как роль 2? Или я должен сам сделать логику для этого?
Что-то вроде ** этого ** Я надеялся, но, очевидно, не работает.
[HttpPost]
public ActionResult Edit(int id, PersonViewModel model)
{
if (ModelState.IsValid)
{
var person= GetPerson(id);
person.Name= model.Name;
person.Age = model.Age;
ICollection<Roles> personroles = new Collection<Roles>();
foreach (string rId in model.Roles)
{
personroles.Add(this.RoleRepository.Single(r => r.Id.ToString() == rId));
}
**person.Roles = personroles;**
this.PersonRepository.SaveChanges();
return RedirectToIndex(personId);
}
return View();
}
Ура,
Кохан