C# 实体框架模型未正确更新

C# 实体框架模型未正确更新,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我的控制器中有一个方法,用于检查是否经过了一定的时间,如果是,则更新模型属性并将其保存到数据库。然而,模型没有更新,我不确定为什么,如果有人可以提供任何建议?谢谢当前正在从数据库中删除订单,但未更改eventDetails.TicketsRemaining [HttpPost] [ValidateAntiForgeryToken] public ActionResult Charge(SummaryVm summaryVm) { if (checkDateTime(summaryVm

我的控制器中有一个方法,用于检查是否经过了一定的时间,如果是,则更新模型属性并将其保存到数据库。然而,模型没有更新,我不确定为什么,如果有人可以提供任何建议?谢谢当前正在从数据库中删除订单,但未更改eventDetails.TicketsRemaining

 [HttpPost]
 [ValidateAntiForgeryToken]
 public ActionResult Charge(SummaryVm summaryVm)
 {

 if (checkDateTime(summaryVm.orderDate))
  {

  //do something

 }else{

  // get the event being booked from db based on the ID
  Event eventDetails = _eventRepository.GetByID(summaryVm.eventID);

  // get the order being processed from db based on the ID
  Order thisOrder = db.Orders.Find(summaryVm.orderID);

 //update the number of tickets remaining for event returning the number of tickets requested to the available tickets
  eventDetails.TicketsRemaining += summaryVm.ticketQuantity;

 //remove order from db as payment was not received and order was not processed
 db.Orders.Remove(thisOrder);

 //save these db changes
 db.SaveChanges();

 return RedirectToAction("TimeOut", new { id = summaryVm.eventID });

  }
}
你的代码很奇怪,因为你在混合设计模式

如果创建了_eventRepository,则数据库不应存在

您已经创建了两个上下文。。并且,您没有将savechanges提交到您在其中更改数据的文件

或者

你可以通过这样做来修复

  Event eventDetails = db.Events.GetByID(summaryVm.eventID);

谢谢,这很有道理。我计划创建一个_orderRepository,所以我只需要使用_eventRepository.SaveChanges()和_orderRepository.SaveChanges()来保存对这两个db表的更改吗?谢谢如果它们共享相同的DB上下文,那么您只需要从其中一个调用它1。我认为你应该瞄准一个工作单元模式。就像你问的,看起来很奇怪。。。我觉得您需要对repos和UOW模式以及dbcontext生命周期上的共享做更多的研究。。。我会说他们没有,然后这将使你正确。。。在这种情况下,您需要为每个回购调用save changes。。。。但是这不是一个好的设计模式。谢谢,我将研究设计模式,并使用工作单元模式进行研究
  Event eventDetails = db.Events.GetByID(summaryVm.eventID);