2012-03-09 19 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

デバッグモードで何も表示されません。 –

答えて

2

私はペイパルのために注文し、カートと異なるため、ここで一つの共通点を参照してください。 Paypalはコードに表示されているコンテキストを使用して挿入されますが、CartとOrderはリポジトリからダウンロードされます。リポジトリが同じコンテキストを使用していることを確認してください。

+0

私はkubal5003が正しいと思います。デバッグモードで 'Context'オブジェクトの' object ID'をチェックしてください。 – mironych

+0

ええと、彼らはどちらもこの文脈を使います。 '' CHDEntities db = new CHDEntities(); '' –

1

だから、Insertが動作してもUpdateはしないときは、(context.Configurationの)AutoDetectChangeプロパティを調べます。

この追跡(平均AutoDetectChange = false)を行わない場合は、変更したエンティティを手動で手動で設定する必要があります(EntityState)。

(Addメソッドは、オブジェクトのentityStateを変更するため、挿入が動作します)

関連する問題