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