Ami*_*san 12 c# asp.net entity-framework
我正在使用ASP.NET MVC应用程序的实体框架代码第一种方法.在提交保存更改时编辑一行后,http post方法出现以下错误:
类型"System.Data.Entity.Infrastructure.DbUpdateConcurrencyException"的异常出现在EntityFramework.dll但在用户代码中没有处理.
db.SaveChanges()遇到此错误.
db.Entry<Project>(EditedProj).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
主要代码:
[HttpGet]
public ActionResult Edit(int id)
{
using (var db = new ProjectContext())
{
return View(db.Projects.Find(id));
}
}
[HttpPost]
public ActionResult Edit(Project EditedProj)
{
using (var db = new ProjectContext())
{
db.Entry<Project>(EditedProj).State =
System.Data.Entity.EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Projects");
}
}
Run Code Online (Sandbox Code Playgroud)
Ami*_*san 10
我找到了答案.我没有为Http Post动作方法传递id值.
如此链接所述
当预期实体的SaveChanges将导致数据库更新但实际上数据库中没有行受到影响时,DbContext抛出异常.
在我的情况下,上面的陈述是正确的,因为我试图更新一行但没有id没有更新行.因此,例外.
它可以使用包含id的隐藏输入元素来完成.下面的代码显示了如何在Edit.cshtml中执行此操作 -
@using (Html.BeginForm("Edit", "Home", FormMethod.Post,
new { @class = "form-horizontal", role = "form" }))
{
@Html.HiddenFor(m => m.ProjectID)
//Other code … … …
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25890 次 |
最近记录: |