Я использую Entity Framework и хочу, чтобы Admin одобрил / отклонил запрос в методе 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>