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