2010-11-26 17 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

ええ、私は知っています。問題はそれが問題を引き起こすのはノップ自身のコンテキストマネージャーであるということです。 –

+0

そのコンテキストがまだ周囲にある場合、それをつかんで再利用してください.... ...またはエンティティオブジェクトをクローンしてください – KristoferA

+0

私は、次の記事の抜粋によれば、GetEntityByIdは使用しないでください。 PBSManagerクラス内でこれを使用している可能性があります。 http://www.nopcommerce.com/boards/t/6677/custom-task-and-entity-framework-exception.aspx – Hps

0

のものとすることができるのHttpContextで現在のコンテキストを保存nopCommerceていない、あなたがそこにそれを探してみましたか?

+0

httpcontextには文脈がありません。問題は –

+0

です。これは残念です。プラグインやタスクも使用する他のコードを手に入れようとしましたか?彼らがこのような状況をどのように扱うのか見てみましょうか? –

+0

ありがとうございますが、これはすでに解決済みです。ずっと前だった –

関連する問題