我正在申请保险申请。当我以委员会成员身份登录并尝试编辑请求时(仅将其状态编辑为"已批准"对于ex)我收到此错误: 存储更新,插入或删除语句会影响意外的行数(0)。自实体加载以来,实体可能已被修改或删除。
构成问题的一行与数据项目中的上下文类相似。
public virtual void Commit()
{
base.SaveChanges();
}
这是我的模特:
public class Request
{
[Key]
public int RequestId { get; set; }
public DateTime Date { get; set; }
public string nomBeneficiary { get; set; }
[DataType(DataType.Upload)]
public byte[] file { get; set; }
public Member beneficiary { get; set; }
public string status { get; set; }
public string eMailBeneficiairy { get; set; }
}
这是控制器:
public ActionResult EditRequest (int id)
{
RequestService requestService = new RequestService();
Request request =requestService.GetRequestById(id);
return View(request);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult EditRequest([Bind(Exclude = "RequestId,Date,nomBeneficiairy,file,beneficiare,eMailBeneficiairy")]Request request)
{
if (ModelState.IsValid) {
RequestService requestService = new Requestervice();
requestService.UpdateRequest(request);
return View("requests");
}
return View(request);
}
以下是观点:
@model Mutuelle.Domain.Entities.Request
@{
ViewBag.Title = "EditRequest";
}
<h2>EditRequest</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Request</h4>
<hr />
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.RequestId)
<div class="form-group">
@Html.LabelFor(model => model.status, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.status)
@Html.ValidationMessageFor(model => model.status)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
答案 0 :(得分:0)
由于您正在编辑,因此该对象应该已存在。但它并不依赖于背景;尝试使用Attach
首先附加它,或者从上下文中查询对象并复制属性。有关详细信息,请参阅this。
编辑:根据您的日期评论,您需要将其更改为可以为空:
public DateTime? Date { get; set; }
并且在附加之前在数据库或控制器中生成null,将其默认为大于1/1/1753的日期(SQL中允许的最小值为datetime)。