В моем приложении ASP.NET MVC я пытаюсь обновить две связанные модели следующим образом:
if (ModelState.IsValid) {
_accommpropertyseasonrepo.Edit(accommPropertySeasonCreateViewModel.AccommPropertySeason);
_accommpropertyseasonrepo.Save();
_accommpropertyseasondetailrepo.Edit(accommPropertySeasonCreateViewModel.AccommPropertySeasonDetail);
_accommpropertyseasondetailrepo.Save();
return RedirectToAction("Details", new { id = id });
}
Первый проходит без проблем, но когда он пытается обновить второй, происходит параллелизм и выдается следующая ошибка:
Оператор сохранения, вставки или удаления, затронутый неожиданно
количество строк (0). Объекты могут быть изменены или удалены с
объекты были загружены. Обновить записи ObjectStateManager
Какой способ достижения того, что я пытаюсь сделать здесь?
UPDATE
Вот метод _accommpropertyseasondetailrepo
Edit
:
public void Edit(AccommPropertySeasonDetail entity) {
_context.Entry(entity).State = System.Data.EntityState.Modified;
}
Вот метод _accommpropertyseasonrepo
Edit
:
public void Edit(AccommPropertySeason entity) {
_context.Entry(entity).State = System.Data.EntityState.Modified;
}
ОБНОВЛЕНИЕ 2
Вот весь метод действия:
public ActionResult SeasonEdit_post(int id, int subid,
[Bind(Exclude =
"AccommPropertySeason.CreatedBy,AccommPropertySeason.CreatedOn")]
AccommPropertySeasonCreateViewModel accommPropertySeasonCreateViewModel) {
if (ModelState.IsValid) {
_accommpropertyseasonrepo.Edit(accommPropertySeasonCreateViewModel.AccommPropertySeason);
_accommpropertyseasonrepo.Save();
_accommpropertyseasondetailrepo.Edit(accommPropertySeasonCreateViewModel.AccommPropertySeasonDetail);
_accommpropertyseasondetailrepo.Save();
return RedirectToAction("Details", new { id = id });
}
return View(accommPropertySeasonCreateViewModel);
}
UPDATE
Brutal Truth: я забыл следующую строку кода в моем представлении, поэтому модель возвращалась без PK:
@Html.HiddenFor(m => m.AccommPropertySeasonDetail.AccommPropertySeasonDetailID)
Проблема решена сейчас!