Requerying database on MVC postback
在上一篇文章(ASP.NET MVC 5模型绑定编辑视图)中,答案建议此控制器代码处理编辑视图回发:
1 2 3 4 5 6 7 8 9 | public ActionResult Edit(WarrantyModelEditViewModel vm) { if (ModelState.IsValid) { var warranty = db.Warranties.Find(vm.Id); . . . } |
问题:在MVC中,重新查询有问题的保修数据库真的是唯一做到这一点的方法吗?它被认为是最佳实践方法吗?(我看过这篇文章,如何重新使用MVC发布的模型数据,但是它有点过时,所以我想确保我的信息是最新的,从MVC 5和EF6开始。)
此外,我认为存在各种数据库并发问题,例如,如果在视图呈现之后,但在回发之前,记录被另一个用户修改或删除。有没有好的资源来讨论处理各种情况的方法?
您还可以附加只需要对数据库进行一次调用的实体。检查这个已解决的线程。
简而言之,像这样的东西-
1 2 3 4 5 | db.Users.Attach(updatedUser); var entry = db.Entry(updatedUser); entry.Property(e => e.Email).IsModified = true; // other changed properties db.SaveChanges(); |
对于第二个获得乐观并发性的问题,您可以有一个名为timestamp的列,并可以在更新期间检查它。检查本教程-在ASP.NET MVC应用程序中处理与实体框架的并发性