EF 4不会更新db.SaveChanges()上的数据库记录

时间:2012-03-09 20:45:09

标签: c# asp.net-mvc-3 sql-server-2008 entity-framework-4.1

您好我的代码段如下:

            Paypal paypal = new Paypal();
            paypal.Invoice = transactionID;
            paypal.TxnType = "";
            paypal.CreateDate = DateTime.Now;
            paypal.AmountPaid = payment;

            paypal.PaymentStatusId = paymentStatus;
            db.Paypals.Add(paypal);
            db.SaveChanges();

            // Order Does not Update
            Order order = _orderRepository.GetOrderByOrderId(orderId);
            order.OrderStatusId = OrderStatusConstant.Paid;
            order.PurchasedDate = DateTime.Now;
            order.LastModified = DateTime.Now;
            order.PaypalIpnId = paypal.PaypalIpnId;
            db.SaveChanges();

            // Cart Does not Update
            Cart cart = _cartRepository.GetCartByCartId(order.CartId);
            cart.Completed = true;
            db.SaveChanges();

OrderCart实体未更新。但是插入了Paypal对象。没有错误或抛出的任何异常都包含在try..catch子句中。

这里似乎有什么问题?存储库代码可以很好地返回对象。

2 个答案:

答案 0 :(得分:2)

我看到订单和购物车有一个共同点,而Paypal则有所不同。使用代码中显示的上下文插入Paypal,但从存储库下载Cart和Order。确保存储库使用相同的上下文。

答案 1 :(得分:1)

所以...当Insert工作但Update没有时,我看一下AutoDetectChange属性(在context.Configuration中)。

如果您不想进行此跟踪(意味着AutoDetectChange = false),则必须手动将修改后的实体设置为已修改(EntityState)。

(插入有效,因为Add方法修改了对象的entityState)