在我的ASP.NET MVC应用程序,我试图更新两个相关型号如下:更新两个相关的模型和并发性的实体框架
if (ModelState.IsValid) {
_accommpropertyseasonrepo.Edit(accommPropertySeasonCreateViewModel.AccommPropertySeason);
_accommpropertyseasonrepo.Save();
_accommpropertyseasondetailrepo.Edit(accommPropertySeasonCreateViewModel.AccommPropertySeasonDetail);
_accommpropertyseasondetailrepo.Save();
return RedirectToAction("Details", new { id = id });
}
第一个是通过有没有问题,但是,当它试图更新第二个,并发在扭结并引发以下错误:
Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries
什么是实现什么,我想在这里做的呢?
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;
}
UPDATE 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
残酷的事实:我忘了下面的代码行上我的看法,因此模型回来了没有PK:
@Html.HiddenFor(m => m.AccommPropertySeasonDetail.AccommPropertySeasonDetailID)
问题现在解决了!
如果您在'_accommpropertyseasondetailrepo.Edit'方法中设置了断点,并且如果您尝试在断点之前选择'AccommPropertySeasonDetail'记录,记录是否会加载? – counsellorben
@counsellorben yep! ModelBinder完美地绑定到该对象。 – tugberk
您想要更新单个事务中的两个实体,并在发生故障时回滚这些更改?没有看到你的存储库方法,你不知道你要做什么。 – Dismissile