我们为电子商务网站提供了运输集成。订单一次发送到大约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?
}
}