c# - 错误 Store、Update、Insert 或 delete 语句影响了意外的行数 (0)
问题描述
我正在使用实体框架,我希望管理员使用两个按钮(一个用于批准,另一个用于拒绝)在 Details 方法中批准/拒绝请求。批准为真,拒绝为假。单击其中一个按钮后,我希望它将 RequestStatus 的字段从已提交更改为批准/拒绝,但我在db.SaveChanges()
. 我一直在寻找那个错误,但我还是不明白。有人可以解释这个错误是什么意思吗?
System.Data.Entity.Infrastructure.DbUpdateConcurrencyException:'存储更新、插入或删除语句影响了意外的行数 (0)。自加载实体后,实体可能已被修改或删除。
这是请求模型
public class Request
{
[Key]
[Display(Name = "N. Requisição")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int RequestID { get; set; }
[Display(Name = "Utilizador")]
public string User { get; set; }
[Display(Name = "Data")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public System.DateTime RequestDate { get; set; }
[Display(Name = "Comentários")]
public string RequestComments { get; set; }
[Display(Name = "Quantidade"), Required]
public int ItemCount { get; set; }
[Display(Name = "Material")]
public string ItemDescription { get; set; }
[Display(Name = "Estado")]
public string RequestStatus { get; set; }
}
这是详细方法
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Request request = db.Requests.Find(id);
if (request == null)
{
return HttpNotFound();
}
return View(request);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Details([Bind(Include = "RequestID,User,RequestDate,RequestComments,ItemCount,ItemDescription,RequestStatus")] Request request)
{
bool Status = true;
if (Status)
{
request.RequestStatus = "Aprovada";
db.Entry(request).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(request);
}
Here is the Details View
@model OnlineRequests.Models.Request
@{
/**/
ViewBag.Title = "Details";
}
<h2>Detalhes</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div>
<h4>Requisição</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.User)
</dt>
<dd>
@Html.DisplayFor(model => model.User)
</dd>
<dt>
@Html.DisplayNameFor(model => model.RequestDate)
</dt>
<dd>
@Html.DisplayFor(model => model.RequestDate)
</dd>
<dt>
@Html.DisplayNameFor(model => model.RequestComments)
</dt>
<dd>
@Html.DisplayFor(model => model.RequestComments)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ItemCount)
</dt>
<dd>
@Html.DisplayFor(model => model.ItemCount)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ItemDescription)
</dt>
<dd>
@Html.DisplayFor(model => model.ItemDescription)
</dd>
<dt>
@Html.DisplayNameFor(model => model.RequestStatus)
</dt>
<dd>
@Html.DisplayFor(model => model.RequestStatus)
</dd>
</dl>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Aprovar" class="btn btn-success" />
</div>
</div>
</div>
}
<p>
@Html.ActionLink("Editar", "Edit", new { id = Model.RequestID }) |
@Html.ActionLink("Back to List", "Index")
</p>
解决方案
推荐阅读
- python - 调试器差异:VSCode / Terminal (Python)
- bash - 将变量传递给 cp / mv
- visual-studio-code - vsc 扩展配置抛出“json 传输失败!” 错误
- solr - 我可以查询不在 solr 配置中的新处理程序吗?
- ethereum - 通过 ethereum RPC JSON API 将 Tether USDT 发送到另一个 Tether 钱包
- python - 网络抓取:如何仅提取我需要的信息
- java - Executable Jar:执行 jar 时访问 pom 的问题
- php - WooCommerce - 如果金额大于 x,则将每个运费设置为 0(我有 90% 的工作片段但无法修改)
- javascript - 有没有办法一次捕获多个相同类型的事件?
- ruby-on-rails - 与名称中最后一个字母 s 的 Leagcy 表连接