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