> private void process() > { > if (InputBox.confirm("The database will be intialized.")!=System.Windows.Forms.DialogResult.OK) { return; }; > Monitor.write("Starting Process : Begin Inventory"); > _interrupt = false; > Dispatcher.BeginInvoke(new ThreadStart(() => Statusbar.displayFirstField("Processing..."))); > using (var xl = new ExcelWrapper()) using (var context = new d060Entities()) > { > var bis = new BeginInventorySource(xl); > var tm = new TimeMonitor(2, bis.LastRow); > Monitor.write("Lines to process : {0}", bis.LastRow - 1); > for (long r = 2;r<=bis.LastRow;r++) > { > if (_interrupt) { return; }; > processRow(r, context, bis,tm); > > } > } > } > void processRow(long r, d060Entities context,BeginInventorySource bis, TimeMonitor tm) > { > string d020Parcel; > string goods; > decimal weight; > decimal amount; > bis.getRow(r, out d020Parcel, out goods, out weight, out amount); > var statusMessage = string.Format("Processing... {0} on row {1} {2}", d020Parcel, r, tm.display(r)); > Dispatcher.BeginInvoke(new ThreadStart(() => Statusbar.displayFirstField(statusMessage))); > var parcel = new d060Entity.Parcel(); > parcel.Cost = amount; > parcel.ParcelWeight = weight; > parcel.ParcelStatus = d060Entity.Repository.getParcelstatus(d060Entity.Repository.eParcelstatus.Active); > parcel.Creationdate = DateTime.Now; > parcel.Lastupdatedate = DateTime.Now; > parcel.Goods = goods; > parcel.D020number = d020Parcel; > parcel.D020wrapper = ""; > // parcel.CalculationStatus = "Locked"; <== missing assignment > var transaction = new d060Entity.Transaction(); > transaction.Creationdate = DateTime.Now; > transaction.Lastupdatedate = DateTime.Now; > transaction.TransactionDate = new DateTime(2014, 1, 1); > transaction.TransactionWeight = weight; > transaction.Amount = amount; > transaction.Transactiontypes_id = d060Entity.Repository.getTransactiontypes_id(d060Entity.Repository.eTransactiontypes.BeginInventory); > transaction.Goods = goods; > transaction.D010Transaction = ""; > transaction.D010Transactiontype = " "; > transaction.D020Transaction = ""; > transaction.D020Transactiontype = " "; > var origin = new d060Entity.Origin(); > origin.Parcels_id = parcel.Parcels_Id; > origin.OriginCalculationstatus = "Locked"; > { > using (var t = context.Database.BeginTransaction()) > { > try > { > string message; > bool success; > context.Parcels.Add(parcel); > Repository.savechanges(context, out success, out message); > if (success == false) > { > Monitor.write("**** Currently processing : {0} **** ", parcel.D020number); > Monitor.write(message); > t.Rollback(); > return; > }; > transaction.Parcels_Id = parcel.Parcels_Id; > context.Transactions.Add(transaction); > Repository.savechanges(context, out success, out message); > if (success == false) > { > Monitor.write("**** Currently processing : {0} **** ", parcel.D020number); > Monitor.write(message); > t.Rollback(); > return; > }; > parcel.CreationTransaction_Id = transaction.Transactions_Id; > origin.Parcels_id = parcel.Parcels_Id; > context.Origins.Add(origin); > Repository.savechanges(context, out success, out message); > if (success == false) > { > Monitor.write("**** Currently processing : {0} **** ", parcel.D020number); > Monitor.write(message); > t.Rollback(); > return; > }; > t.Commit(); > } > catch (Exception ex) > { > Monitor.write("Problem with Parcel {0}, line {1} : ", parcel.D020number, r, ex.Message); > t.Rollback(); > } > } > } > } >>
>>>>> public static void savechanges(d060Entities context,out bool success,out string message) >>>>> { >>>>> var s = new StringBuilder(); >>>>> s.Clear(); >>>>> success = true; >>>>> message = ""; >>>>> try >>>>> { >>>>> context.SaveChanges(); >>>>> } >>>>> catch (DbEntityValidationException ex) >>>>> { >>>>> s.AppendLine("DbEntityValidationException."); >>>>> s.AppendFormat("Errors : {0}", ex.EntityValidationErrors.Count()); >>>>> s.AppendLine(); >>>>> foreach (var e in ex.EntityValidationErrors) >>>>> { >>>>> foreach (var e1 in e.ValidationErrors) >>>>> { >>>>> s.AppendFormat(e1.ErrorMessage); >>>>> s.AppendLine(); >>>>> } >>>>> } >>>>> success = false; >>>>> } >>>>> catch (Exception ex) >>>>> { >>>>> s.AppendFormat("error : {0}", ex.ToString()); >>>>> success = false; >>>>> } >>>>> message = s.ToString(); >>>>> } >>>>>>>>>