示例#1
0
        /// <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);
        }
示例#2
0
        /// <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();
            }
        }