Я пишу приложение ASP.NET MVC 2, которое использует Entity Framework 4 и службы данных WCF.
Я хочу манипулировать отношениями «многие ко многим» (составной ключ) между обязанностями и рабочими на основе состояния некоторых флажков.
Работник может иметь ноль или более обязанностей. У Обязанности может быть ноль или более работников.
Этот код взят из одного из моих контроллеров:
//
// POST: /Duty/Edit/5
[HttpPost]
public ActionResult Edit(Duty Model, FormCollection collection)
{
ctx.AttachTo("Duties", Model);
ctx.UpdateObject(Model);
// handle checkboxes
ctx.LoadProperty(Model, "Workers");
foreach (Worker w in ctx.Workers)
{
bool isChecked = collection[w.Id.ToString()].Contains("t");
bool wasChecked = Model.Workers.Contains(w);
if (isChecked && !wasChecked)
{
Model.Workers.Add(w);
}
else if (wasChecked && !isChecked)
{
Model.Workers.Remove(w);
}
}
ctx.SaveChanges();
return RedirectToAction("Index");
}
Методы Add()
и Remove()
вызываются соответствующим образом. Это выполняется без исключения. Но изменения не фиксируются в моей базе данных. Почему?
Обновлять
Я пробовал перевернуть его на w.Duties.Add(Model);
, и это тоже не работает.