您好我的代码段如下:
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();
Order
和Cart
实体未更新。但是插入了Paypal
对象。没有错误或抛出的任何异常都包含在try..catch
子句中。
这里似乎有什么问题?存储库代码可以很好地返回对象。
答案 0 :(得分:2)
我看到订单和购物车有一个共同点,而Paypal则有所不同。使用代码中显示的上下文插入Paypal,但从存储库下载Cart和Order。确保存储库使用相同的上下文。
答案 1 :(得分:1)
所以...当Insert工作但Update没有时,我看一下AutoDetectChange属性(在context.Configuration中)。
如果您不想进行此跟踪(意味着AutoDetectChange = false),则必须手动将修改后的实体设置为已修改(EntityState)。
(插入有效,因为Add方法修改了对象的entityState)