实体框架立即保存在循环中

时间:2019-07-11 19:36:07

标签: c# entity-framework

我们为电子商务网站提供了运输集成。订单一次发送到大约100-150个订单中,批量发送到运输提供商的Web服务。有时此交易大约需要3-4分钟。有多个使用此系统的员工,有时同一订单会被两次运送,因为将订单发送到Web服务与将相应的值保存到数据库之间存在明显的延迟。我可以在单个SaveChanges上多次使用DbContext吗?我有什么需要知道的缺点(性能不是最大的问题)吗?

public ActionResult ShipOrders(List<OrderInvoiceDTO> orderInvoiceDTOs)
{
    var preparedOrderList = orderServices.GetOrdersForIDList(preparedOrderIds);

    //Check if order is shipped before.Doesn't work when another user is waiting for a bulk update.
    foreach (Order o in preparedOrderList)
    {
        if (o.Shipment.Count != 0)
        {
            alreadyShippedOrders.Add(o);
        }
    }

    //Remove the ones got shipped before
    foreach (Order or in alreadyShippedOrders)
    {
        preparedOrderList.Remove(or);
    }

    foreach (Order order in preparedOrderList)
    {
        //Send it to the web service and update related fields.
        //Use save changes in a loop?
    }
} 

0 个答案:

没有答案