2010-11-26 52 views
1

我正在为我的网上商店使用nopcommerce,并且我正在使用在订单发货时从外部系统获取信息的任务。发货时,我想捕获付款,然后将其设置为发货。但是,我不断收到EF错误。现在有什么办法可以解决这个问题?我需要启动它并运行NopCommerce EF问题

IEntityChangeTracker的多个实例无法引用实体对象。

见下面我的代码:

   int orderId = PBSManager.GetOrderIdByCustomOrderNumber(customOrderNumber); 
      NopObjectContext db = ObjectContextHelper.CurrentObjectContext; 
      Order order = db.Orders.SingleOrDefault(c => c.OrderId == orderId); 
      //Incorrect order id  
      if (order == null) 
      { 
       //Skip this one if we cannot find the id 
       continue; 
      } 
      if (OrderManager.CanCapture(order)) 
      { 
       string error = string.Empty; 
       OrderManager.Capture(order, ref error); 
       if (!string.IsNullOrEmpty(error)) 
       { 
        PBSManager.HandleCaptureError(order, error); 
        return; 
       } 
      } 
      if (OrderManager.CanShip(order)) 
      { 
       OrderManager.Ship(order.OrderId, true); 
      } 

回答

0

我只是猜测,可能是你创建的类的OrderManager另一个上下文。你应该使用相同的上下文。

这个链接可以是任何帮助

Multiple instances of context

+0

是的,我知道。问题是,它是nop自己的上下文管理器,导致问题 – 2010-11-26 14:36:19

+0

因此,如果他们的上下文仍然在,抓住并重用它......或克隆实体对象 – KristoferA 2010-11-26 14:53:14

0

不nopCommerce存储在HttpContext的当前上下文,你尝试过在那里找呢?