2012-03-09 84 views
0

您好我有下面這段代碼片段:EF 4不會更新db.SaveChanges數據庫記錄()

  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子句中。

這似乎是什麼問題?儲存庫代碼返回對象正常。

+0

在調試模式下你什麼也得不到? – 2012-03-09 20:52:33

回答

2

我看到在這裏很常見的一件事秩序與車和貝寶不同。 Paypal是使用代碼中顯示的上下文插入的,但Cart和Order是從存儲庫下載的。確保該存儲庫使用相同的上下文。

+0

我認爲kubal5003是正確的。在調試模式下檢查'Context'對象的'object ID'。 – mironych 2012-03-09 22:10:15

+0

嗯,他們都使用這個上下文''CHDEntities db = new CHDEntities();''' – 2012-03-10 10:36:02

1

因此......當插入工作,但更新沒有,我看AutoDetectChange屬性(在context.Configuration)。

如果您不想要此跟蹤(意思是AutoDetectChange = false),則必須手動將已修改的實體設置爲已修改(EntityState)。

(插入的作品,因爲Add方法修改對象的entityState)