从线减去并移到下一个

时间:2016-11-18 00:18:34

标签: c# linq

我想从具有最早日期和计数器>的行中减去0,当它达到0时,我想从具有相同itemId的下一个最旧的行中减去,并在其他表上做一些其他更新。

我的问题是,如果有更好的方法,如果我的代码效率不高。如果它崩溃了,代码会回滚吗?我需要尝试/捕获吗?如果有任何建议,请提供一些代码。 这是我的代码:

public static int insertOrder(Order order)
    {
        using (var db = new AWarehouseDataClassesDataContext())
        {
            using (TransactionScope ts = new TransactionScope())
            {
                tblOrder row = generateOrderToBeInserted(order);
                db.tblOrders.InsertOnSubmit(row);
                db.SubmitChanges();
                order.orderId = row.OrderId;

                foreach(var x in order.insertList)
                {
                    int qt = x.qty;
                    while (qt > 0)
                    {
                        var line = db.tblInsertLines.First(r => r.ItemId == x.itemId && r.Counter > 0);
                        int c = line.Counter;
                        for (int a = c; a > 0 && qt > 0; a--)
                        {
                            line.Counter = line.Counter - 1;
                            qt--;
                        }
                        db.SubmitChanges();
                    }
                    tblOrderLine orderLine = generateOrderLine(order, x);
                    db.tblOrderLines.InsertOnSubmit(orderLine);
                    db.SubmitChanges();

                    var item = db.tblItems.Single(i => i.ItemId == x.itemId);
                    item.Qty = item.Qty - x.qty;
                    item.LastUpdate = order.orderDate;
                    item.UpdatedBy = order.user;
                    db.SubmitChanges();
                }
                ts.Complete();
                return order.orderId;
            }
        }
    }

0 个答案:

没有答案