Это пощекотало и мой мозг! Я использую MVC3 и нахожу себя пишущим собственную систему электронной коммерции, основанную примерно на этом руководстве, поскольку я новичок в MVC3. Я столкнулся с той же проблемой, когда он обновляет мою таблицу заказов, а также таблицу сведений о заказе, но не общий столбец таблицы заказов.
Решение, которое я придумал, выглядит следующим образом:
Внутри CheckoutController.cs внесите следующие изменения и добавьте storeDB.SaveChanges (); после CreateCard (заказ); Метод в соответствии с примером ниже:
// POST: /Checkout/AddressAndPayment
[HttpPost]
public ActionResult AddressAndPayment(FormCollection values)
{
var order = new Order();
TryUpdateModel(order);
try
{
if (string.Equals(values["PromoCode"], PromoCode,
StringComparison.OrdinalIgnoreCase) == false)
{
return View(order);
}
else
{
order.Username = User.Identity.Name;
order.OrderDate = DateTime.Now;
//Save Order
storeDB.Orders.Add(order);
storeDB.SaveChanges();
//Process the order
var cart = ShoppingCart.GetCart(this.HttpContext);
cart.CreateOrder(order);
//! ADD THIS METHOD TO PERSIST DATA AGAIN! And your Total will Update.
storeDB.SaveChanges();
return RedirectToAction("Complete",
new { id = order.OrderId });
}
}
catch
{
//Invalid - redisplay with errors
return View(order);
}
}
Это кажется немного изворотливым / странным .... Если я добавлю точку останова к SaveChanges внутри ShoppingCartModel, то он также сохранит данные, но если вы проверите БД, то после этого все равно будет отображать итоговое значение как нулевое ... Выше Код, однако, решает проблему ...