【问题标题】:Updating a single field in ASP.Net MVC 5更新 ASP.Net MVC 5 中的单个字段
【发布时间】:2017-09-04 07:19:55
【问题描述】:

我想更新 ASP.Net MVC 5 中的单个字段我收到错误:

我的代码:

  MyJobs.PublishStatus = 1;
  db.MyJobContext.Attach(MyJobs);
  db.Entry(MyJobs).Property(x => x.PublishStatus).IsModified = true;
  //db.Configuration.ValidateOnSaveEnabled = false;
  db.SaveChanges();

我得到以下错误:

存储更新、插入或删除语句影响了意外数量的行 (0)。 自加载实体后,实体可能已被修改或删除。 请参阅http://go.microsoft.com/fwlink/?LinkId=472540 了解有关理解和 处理乐观并发异常。

有关于此错误的帖子,但我无法弄清楚: Entity Framework: "Store update, insert, or delete statement affected an unexpected number of rows (0)."

并从 How to update only one field using Entity Framework? 更新 asp.net MVC 中的单个字段

【问题讨论】:

  • MyJobs.PublishStatus = 1; 如果MyJobs 来自 LINQ 结果集,可能已经更新了PublishStatus,因此当Attach 被执行时,就没有要更新的行了。
  • 如果您将ValidateOnSaveEnabled 设置为false,它将起作用。我可以看到你的代码你已经有了那行,你为什么评论它?
  • 我试过了,但没用

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


【解决方案1】:

我通过更新表单解决了这个问题,并为 Id 字段添加了隐藏的输入

@using (Html.BeginForm())
{
     @Html.AntiForgeryToken()
     @Html.HiddenFor(model => model.Id)
     <div class="form-actions no-color">
        <input type="submit" value="Publish" class="btn btn-default" />
     </div>
}

希望这对面临同样问题的人有所帮助。

【讨论】:

    猜你喜欢
    • 2020-07-24
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多