/// <summary> /// After mapping workbooks table completed, we will try to update reference of general_insurance table /// </summary> /// <param name="manager"></param> /// <param name="sourceDatabase"></param> /// <param name="destinationDatabase"></param> /// <param name="dataConversionReflection"></param> public override void AfterMapping(MappingManager manager, SourceDatabase sourceDatabase, DestinationDatabase destinationDatabase) { // // First, try to get share data Dictionary <int, int?> shareData = ManualMappingDropBox.GetData("general_insurance") as Dictionary <int, int?>; if (shareData == null) { LogService.Log.Error("Can not get share data from general_insurance table."); return; } // // Then try to load new record in general_insurance table (In destination database) // To re-update reference if (manager.IsGeneratedScript) { this.UpdateGeneralInsuranceBySQLScript(manager, sourceDatabase, destinationDatabase, shareData); } else { DatabaseConversion.CleanerTool.BOALedgerDataAccess.BOALedgerEntities dbContext = destinationDatabase.GetNewDbContext() as DatabaseConversion.CleanerTool.BOALedgerDataAccess.BOALedgerEntities; List <DatabaseConversion.CleanerTool.BOALedgerDataAccess.general_insurance> listRecords = dbContext.general_insurance.ToList(); foreach (DatabaseConversion.CleanerTool.BOALedgerDataAccess.general_insurance record in listRecords) { if (shareData.ContainsKey(record.genins_id)) { record.genins_current_workbook = shareData[record.genins_id]; } } dbContext.SaveChanges(); } // // Release memory shareData = null; ManualMappingDropBox.ReleaseData("general_insurance"); }
/// <summary> /// Do some stuffs before commit new value to destination database /// </summary> /// <param name="manager"></param> /// <param name="sourceDatabase"></param> /// <param name="destinationDatabase"></param> /// <param name="listNewRecord"></param> public override void BeforeCommitChanges(MappingManager manager, SourceDatabase sourceDatabase, DestinationDatabase destinationDatabase, List <object> listNewRecord) { // // Initialize for sharing data Dictionary <int, int?> shareData = new Dictionary <int, int?>(); // // Loop and set null foreach (object obj in listNewRecord) { DatabaseConversion.CleanerTool.BOALedgerDataAccess.general_insurance record = obj as DatabaseConversion.CleanerTool.BOALedgerDataAccess.general_insurance; if (record.genins_current_workbook != null) { shareData.Add(record.genins_id, record.genins_current_workbook); record.genins_current_workbook = null; } } // // Share data for ManualMapping_workbooks ManualMappingDropBox.ShareData("general_insurance", shareData); }