protected virtual void btnSave_Click(object sender, EventArgs e) { obj.Validate(true); ErrorList valErr = obj.GetValidationErrors(); errors.List.DataSource = valErr.Errors; errors.List.DataBind(); if (valErr.HasErrors()) return; ISalesOrderService svcSalesOrder = DI.Resolve<ISalesOrderService>(); try { // for new objects create the object and store its key if (IsNew) { SalesOrderDetail_CreateInput inDetail_Create = new SalesOrderDetail_CreateInput(); obj.ToDataContract(inDetail_Create); SalesOrderDetail_CreateOutput outDetail_Create; using (TimeTracker.ServiceCall) outDetail_Create = svcSalesOrder.Detail_Create(inDetail_Create); obj.FromDataContract(outDetail_Create); IsNew = false; } else { SalesOrderDetail_UpdateInput_Data inDetail_Update_Data = new SalesOrderDetail_UpdateInput_Data(); obj.ToDataContract(inDetail_Update_Data); using (TimeTracker.ServiceCall) svcSalesOrder.Detail_Update((int)obj.SalesOrderDetailIdProperty.TransportValue, inDetail_Update_Data); } obj.SetModified(false, true); OnSaved(EventArgs.Empty); } catch(Exception ex) { errors.List.DataSource = ErrorList.FromException(ex).Errors; errors.List.DataBind(); } finally { if (svcSalesOrder is IDisposable) ((IDisposable)svcSalesOrder).Dispose(); } }
public virtual SalesOrderDetail_CreateOutput Detail_Create(SalesOrderDetail_CreateInput _data) { SalesOrderDetail_CreateOutput res = new SalesOrderDetail_CreateOutput(); using (AdventureWorksEntities ctx = new AdventureWorksEntities()) { EntityState state = EntityState.Added; SalesOrderDetail obj = new SalesOrderDetail(); var entry = ctx.Entry(obj); entry.State = state; entry.CurrentValues.SetValues(_data); obj.SalesOrderObject = ctx.SalesOrder.Find(_data.SalesOrderId); if (obj.SalesOrderObject == null) ErrorList.Current.AddError("Invalid value {0} for parameter SalesOrderId. Cannot find the corresponding SalesOrder object.", _data.SalesOrderId); // CUSTOM_CODE_START: use the SpecialOfferId input parameter of Detail_Create operation below // TODO: ??? = _data.SpecialOfferId; // CUSTOM_CODE_END // CUSTOM_CODE_START: use the ProductId input parameter of Detail_Create operation below // TODO: ??? = _data.ProductId; // CUSTOM_CODE_END // CUSTOM_CODE_START: add custom code for Detail_Create operation below // CUSTOM_CODE_END ErrorList.Current.AbortIfHasErrors(HttpStatusCode.BadRequest); ctx.SaveChanges(); ServiceUtil.CopyProperties(obj, res); } return res; }