【问题标题】:NopCommerce EF problemsNopCommerce EF 问题
【发布时间】:2010-11-26 14:02:08
【问题描述】:

我正在为我的网上商店使用 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);
            }

【问题讨论】:

    标签: c# entity-framework nopcommerce


    【解决方案1】:

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

    这个链接有帮助吗

    Multiple instances of context

    【讨论】:

    • 是的,我知道。问题是导致问题的是 nop 自己的上下文管理器
    • 所以如果他们的上下文仍然存在,抓住并重用它.... ...或克隆实体对象
    • 我想,我帮不上什么忙,但是下面文章的摘录说,不应该使用 GetEntityById。您可能会在 PBSManager 类中使用它。 nopcommerce.com/boards/t/6677/…
    • 但获取他们竞争的唯一方法是使用“ObjectContextHelper.CurrentObjectContext”,这会导致此错误。而 Hps,我没有使用 GetEntityById。我在 nopcommerce 上阅读了所有这些帖子,它们似乎都有相同的问题,但没有解决方案
    【解决方案2】:

    nopCommerce 不会将当前上下文存储在 HttpContext 中,您是否尝试在其中查找它?

    【讨论】:

    • httpcontext中没有上下文,就是这个问题
    • 对此很抱歉,您是否尝试过抓取一些也使用任务的插件或其他代码来查看它们如何处理此类情况?
    猜你喜欢
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多