コード例 #1
0
        private void UpdateOrderUsingApplyCurrentValues_Click(object sender, EventArgs e)
        {
            var order = new Order
            {
                OrderId               = Convert.ToInt32(OrderId.Text),
                Version               = (byte[])OrderId.Tag,
                CustomerId            = ((Customer)cmbCustomers.SelectedItem).CompanyId,
                OrderDate             = DateTime.ParseExact(OrderDate.Text, "dd/MM/yyyy", null),
                ActualShippingDate    = String.IsNullOrWhiteSpace(ActualShippindDate.Text) ? null : new DateTime?(DateTime.ParseExact(ActualShippindDate.Text, "dd/MM/yyyy", null)),
                EstimatedShippingDate = String.IsNullOrWhiteSpace(EstimatedShippingDate.Text) ? null : new DateTime?(DateTime.ParseExact(EstimatedShippingDate.Text, "dd/MM/yyyy", null)),
                ShippingAddress       = new AddressInfo()
                {
                    Address = ShippingAddress.Text,
                    City    = ShippingCity.Text,
                    Country = ShippingCountry.Text,
                    ZipCode = ShippingZipCode.Text
                }
            };

            foreach (var item in Details.Items)
            {
                var listItem = (ListViewItem)item;
                var detail   = new OrderDetail()
                {
                    OrderDetailId = ((OrderDetail)listItem.Tag).OrderDetailId,
                    ProductId     = Convert.ToInt32(((OrderDetail)listItem.Tag).ProductId),
                    Quantity      = Convert.ToInt32(listItem.SubItems[1].Text),
                    UnitPrice     = Convert.ToDecimal(listItem.SubItems[2].Text),
                    Discount      = Convert.ToDecimal(listItem.SubItems[3].Text)
                };
                order.OrderDetails.Add(detail);
            }

            using (var transaction = new TransactionScope())
            {
                using (var ctx = new OrderITEntities())
                {
                    ctx.ExecuteStoreCommand("update product set availableitems = availableitems + od.Quantity from product p join [OrderDetail] od on od.ProductId = p.ProductId where od.orderid = {0}", order.OrderId);
                    var dbOrder         = ctx.Orders.Include("OrderDetails").First(o => o.OrderId == order.OrderId);
                    var AddedDetails    = order.OrderDetails.Except(dbOrder.OrderDetails).ToList();
                    var RemovedDetails  = dbOrder.OrderDetails.Except(order.OrderDetails).ToList();
                    var ModifiedDetails = dbOrder.OrderDetails.Intersect(order.OrderDetails).ToList();
                    ctx.Orders.ApplyCurrentValues(order);
                    AddedDetails.ForEach(d => dbOrder.OrderDetails.Add(d));
                    RemovedDetails.ForEach(d => dbOrder.OrderDetails.Remove(d));
                    ModifiedDetails.ForEach(d => ctx.OrderDetails.ApplyCurrentValues(d));
                    ctx.SaveChanges();
                    ctx.ExecuteStoreCommand("update product set availableitems = availableitems - od.Quantity from product p join [OrderDetail] od on od.ProductId = p.ProductId where od.orderid = {0}", order.OrderId);
                }
                transaction.Complete();
            }
        }
コード例 #2
0
 private void DeleteOrderConnected_Click(object sender, EventArgs e)
 {
     using (var transaction = new TransactionScope())
     {
         using (var ctx = new OrderITEntities())
         {
             ctx.ExecuteStoreCommand("update product set availableitems = availableitems + od.Quantity from product p join [OrderDetail] od on od.ProductId = p.ProductId where od.orderid = {0}", OrderId.Text);
             var order = ctx.Orders.First(o => o.OrderId == Convert.ToInt32(OrderId.Text));
             ctx.Orders.DeleteObject(order);
             ctx.SaveChanges();
         }
         transaction.Complete();
     }
 }
コード例 #3
0
 private void CreateOrder_Click(object sender, EventArgs e)
 {
     using (var transaction = new TransactionScope())
     {
         using (var ctx = new OrderITEntities())
         {
             var order = new Order
             {
                 CustomerId      = ((Customer)cmbCustomers.SelectedItem).CompanyId,
                 OrderDate       = DateTime.Now.Date,
                 ShippingAddress = new AddressInfo()
                 {
                     Address = ShippingAddress.Text,
                     City    = ShippingCity.Text,
                     Country = ShippingCountry.Text,
                     ZipCode = ShippingZipCode.Text
                 }
             };
             var r = new Random();
             foreach (var item in Details.Items)
             {
                 var listItem = (ListViewItem)item;
                 var detail   = new OrderDetail()
                 {
                     OrderDetailId = r.Next(),
                     ProductId     = Convert.ToInt32(((OrderDetail)listItem.Tag).ProductId),
                     Quantity      = Convert.ToInt32(listItem.SubItems[1].Text),
                     UnitPrice     = Convert.ToDecimal(listItem.SubItems[2].Text),
                     Discount      = Convert.ToDecimal(listItem.SubItems[3].Text)
                 };
                 order.OrderDetails.Add(detail);
             }
             ctx.Orders.AddObject(order);
             ctx.SaveChanges();
             ctx.ExecuteStoreCommand("update product set availableitems = availableitems - od.Quantity from product p join [OrderDetail] od on od.ProductId = p.ProductId where od.orderid = {0}", order.OrderId);
             MessageBox.Show("Order created with id " + order.OrderId);
             OrderId.Text = order.OrderId.ToString();
         }
         transaction.Complete();
     }
 }