【问题标题】:Requerying database on MVC postback在 MVC 回发上重新查询数据库
【发布时间】:2014-02-16 15:56:27
【问题描述】:

在之前的帖子 (ASP.NET MVC 5 Model-Binding Edit View) 中,答案建议使用此控制器代码来处理编辑视图回发:

public ActionResult Edit(WarrantyModelEditViewModel vm)
{
   if (ModelState.IsValid)
   {
      var warranty = db.Warranties.Find(vm.Id);
     .
     .
     .
}

问题: 在 MVC 中重新查询有关保修的数据库真的是唯一的方法吗?它被认为是最佳实践方法吗? (我看到了这篇帖子,How to re-use model data on post back with MVC,但它有点过时了,所以我想确保我的信息是 MVC 5 和 EF 6 的最新信息。)

此外,我认为存在各种数据库并发问题,例如在呈现视图后但在回发之前,记录是否被其他用户修改或删除。是否有任何好的资源来讨论处理各种场景的方法?

【问题讨论】:

    标签: asp.net-mvc entity-framework asp.net-mvc-5


    【解决方案1】:

    您还可以附加只需要一次调用数据库的实体。 Check this solved thread.

    简而言之就是这样 -

    db.Users.Attach(updatedUser);
    var entry = db.Entry(updatedUser);
    entry.Property(e => e.Email).IsModified = true;
    // other changed properties
    db.SaveChanges();
    

    关于获得乐观并发的第二个问题,您可以有一个名为 timestamp 的列,并且可以在更新期间检查它。查看本教程 - Handling Concurrency with the Entity Framework in an ASP.NET MVC Application

    【讨论】:

    • 正是我想要的! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    相关资源
    最近更新 更多