Esempio n. 1
0
        public int SaveOrderDetail(HsrOrderApp.BL.DomainModel.OrderDetail detail, HsrOrderApp.BL.DomainModel.Order forThisOrder)
        {
            try
            {
                string      setname = "OrderDetailSet";
                OrderDetail dbOrderDetail;
                bool        isNew = false;
                if (detail.OrderDetailId == default(int) || detail.OrderDetailId <= 0)
                {
                    isNew         = true;
                    dbOrderDetail = new OrderDetail();
                }
                else
                {
                    dbOrderDetail = new OrderDetail()
                    {
                        OrderDetailId = detail.OrderDetailId, Version = detail.Version.ToTimestamp()
                    };
                    dbOrderDetail.EntityKey = db.CreateEntityKey(setname, dbOrderDetail);
                    db.AttachTo(setname, dbOrderDetail);
                }
                dbOrderDetail.UnitPrice       = detail.UnitPrice;
                dbOrderDetail.QuantityInUnits = detail.QuantityInUnits;


                if (isNew)
                {
                    dbOrderDetail.OrderReference.EntityKey   = new EntityKey("HsrOrderAppEntities.OrderSet", "OrderId", detail.Order.OrderId);
                    dbOrderDetail.ProductReference.EntityKey = new EntityKey("HsrOrderAppEntities.ProductSet", "ProductId", detail.Product.ProductId);
                    db.AddToOrderDetailSet(dbOrderDetail);
                }
                else
                {
                    if (dbOrderDetail.ProductReference.GetEnsureLoadedReference().Value.ProductId != detail.Product.ProductId)
                    {
                        Product newProduct = new Product {
                            ProductId = detail.Product.ProductId
                        };
                        db.AttachTo("ProductSet", newProduct);
                        dbOrderDetail.Product = newProduct;
                    }
                }
                db.SaveChanges();

                detail.OrderDetailId = dbOrderDetail.OrderDetailId;
                return(dbOrderDetail.OrderDetailId);
            }
            catch (OptimisticConcurrencyException ex)
            {
                if (ExceptionPolicy.HandleException(ex, "DA Policy"))
                {
                    throw;
                }
                return(default(int));
            }
        }
Esempio n. 2
0
        public int SaveOrderDetail(HsrOrderApp.BL.DomainModel.OrderDetail detail, HsrOrderApp.BL.DomainModel.Order forThisOrder)
        {
            try
            {
                OrderDetail dbOrderDetail = new OrderDetail();
                bool        isNew         = false;
                if (detail.OrderDetailId == default(int) || detail.OrderDetailId <= 0)
                {
                    isNew = true;
                }

                dbOrderDetail.OrderDetailId   = detail.OrderDetailId;
                dbOrderDetail.Version         = detail.Version.ToTimestamp();
                dbOrderDetail.UnitPrice       = detail.UnitPrice;
                dbOrderDetail.QuantityInUnits = detail.QuantityInUnits;
                dbOrderDetail.ProductId       = detail.Product.ProductId;
                dbOrderDetail.OrderId         = forThisOrder.OrderId;

                if (isNew)
                {
                    db.OrderDetails.InsertOnSubmit(dbOrderDetail);
                }
                else
                {
                    db.OrderDetails.Attach(dbOrderDetail, true);
                }
                db.SubmitChanges();
                detail.OrderDetailId = dbOrderDetail.OrderDetailId;
                return(dbOrderDetail.OrderDetailId);
            }
            catch (ChangeConflictException ex)
            {
                if (ExceptionPolicy.HandleException(ex, "DA Policy"))
                {
                    throw;
                }
                return(default(int));
            }
        }