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