' System.Data.Entity.Infrastructure.DbUpdateException'我不知道为什么我的程序给我这个错误

时间:2016-08-12 23:38:46

标签: c# asp.net-mvc

我是网络编程的业余爱好者。 目前正在使用c#,MVC,js / ts和jquery。

当我尝试将SaveChanges保存到我的数据库时,我收到此错误:

  

" ' System.Data.Entity.Infrastructure.DbUpdateException'发生在   EntityFramework.dll。附加信息:发生错误   更新条目。有关详细信息,请参阅内部异常"

没有内心细节。这就是我想要做的。

        Order 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);

                return RedirectToAction("Complete",
                    new { id = order.OrderId });
            }
        }
        catch (System.Data.Entity.Core.UpdateException e)
        {
            return View(order);
        }

        catch (System.Data.Entity.Infrastructure.DbUpdateException ex) //DbContext
        {
            Console.WriteLine(ex.InnerException);
            return View(order);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.InnerException);
            //Invalid - redisplay with errors
            return View(order);
        }

cart.CreateOrder(order);

失败

这就是CreateOrder(订单)所做的事情

        decimal orderTotal = 0;

        var cartItems = GetCartItems();
        // Iterate over the items in the cart, 
        // adding the order details for each
        foreach (var item in cartItems)
        {
            var orderDetail = new OrderDetail
            {
                GameId = item.GameId,
                OrderId = order.OrderId,
                UnitPrice = item.Game.Price,
                Quantity = item.Count
            };
            // Set the order total of the shopping cart
            orderTotal += (item.Count * item.Game.Price);

            storeDB.OrderDetails.Add(orderDetail);

        }
        // Set the order's total to the orderTotal count
        order.Total = orderTotal;

        // Save the order
        storeDB.SaveChanges();
        // Empty the shopping cart
        EmptyCart();
        // Return the OrderId as the confirmation number
        return order.OrderId;

它在storeDB.SaveChanges()中给出了错误消息; 一切都按照它的方式拼写。

你们认为我错过了什么?

2 个答案:

答案 0 :(得分:0)

DbUpdateException主要是由数据库约束违规引起的。您应该显示处理DbUpdateException的其他代码:

$(function() {
   var secondsToWait = 2;
   setTimeout(function() {
      $('#content-selector').fadeIn();
   }, secondsToWait * 1000);
});

答案 1 :(得分:0)

我们想通了。将更改保存到数据库时,我们忘记填写该条目的列。非常愚蠢= P.我和一个合伙人一起工作,并认为他们照顾了所有这些东西。

谢谢你们