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)); } }
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)); } }