/// <summary> /// Update general insurance by generate sql script /// </summary> /// <param name="manager"></param> /// <param name="sourceDatabase"></param> /// <param name="destinationDatabase"></param> /// <param name="referenceData">Reference data, store reference value from general_insurance -> workbook</param> private void UpdateGeneralInsuranceBySQLScript(MappingManager manager, SourceDatabase sourceDatabase, DestinationDatabase destinationDatabase, Dictionary <int, int?> referenceData) { // // Initialize string destinationDatabaseName = destinationDatabase.GetDatabaseName(); string sqlScript = "-- This script updates general_insurance table when all records of workbooks table are mapped." + Environment.NewLine + "USE [" + destinationDatabaseName + "]" + Environment.NewLine + "GO" + Environment.NewLine; string updateTemplate = "UPDATE {DESTINATION_DATABASE_NAME}.dbo." + Environment.NewLine + "SET genins_current_workbook = {REFERENCE_VALUE}" + Environment.NewLine + "WHERE genins_id = {PRIMARY_KEY_VALUE}" + Environment.NewLine; updateTemplate.Replace("{DESTINATION_DATABASE_NAME}", destinationDatabaseName); // // Generate update script foreach (int primaryKey in referenceData.Keys) { sqlScript = sqlScript + updateTemplate.Replace("{PRIMARY_KEY_VALUE}", primaryKey.ToString()) .Replace("{REFERENCE_VALUE}", referenceData[primaryKey].Value.ToString()); } // // Append to workbook script manager.WriteSQLScript("workbooks", sqlScript, true); }
/// <summary> /// Manual function, after mapping completed, we will re-update reference value /// </summary> /// <param name="manager"></param> /// <param name="sourceDatabase"></param> /// <param name="destinationDatabase"></param> public override void AfterMapping(MappingManager manager, SourceDatabase sourceDatabase, DestinationDatabase destinationDatabase) { // // First, try to load new record in destination database string destinationDatabaseName = destinationDatabase.GetDatabaseName(); // // Try to update if (manager.IsGeneratedScript) { // // First generate update script string sqlScript = "USE [" + destinationDatabaseName + "]" + Environment.NewLine + "GO" + Environment.NewLine; string updateTemplate = "UPDATE {DESTINATION_DATABASE_NAME}.dbo.branches" + Environment.NewLine + "SET bra_parent_branch = {REFERENCE_VALUE}" + Environment.NewLine + "WHERE bra_id = {PRIMARY_KEY_VALUE}" + Environment.NewLine; updateTemplate = updateTemplate.Replace("{DESTINATION_DATABASE_NAME}", destinationDatabase.GetDatabaseName()); foreach (int primaryKeyValue in this._listReferenceValue.Keys) { int?referenceValue = this._listReferenceValue[primaryKeyValue]; sqlScript = sqlScript + updateTemplate.Replace("{REFERENCE_VALUE}", referenceValue.Value.ToString()) .Replace("{PRIMARY_KEY_VALUE}", primaryKeyValue.ToString()); } // // Then append to file (existed file) manager.WriteSQLScript("branches", sqlScript, true); } else { // // If we do not generate sql script // we need to update directly in destination table BOALedgerDataAccess.BOALedgerEntities dbContext = destinationDatabase.GetDbContext() as BOALedgerDataAccess.BOALedgerEntities; List <BOALedgerDataAccess.branches> listRecords = dbContext.branches.ToList(); foreach (BOALedgerDataAccess.branches record in listRecords) { if (this._listReferenceValue.ContainsKey(record.bra_id)) { record.bra_parent_branch = this._listReferenceValue[record.bra_id]; } } dbContext.SaveChanges(); } }