Esempio n. 1
0
        /// <summary>
        /// Updates the enum tables for a single database.
        /// </summary>
        /// <param name="conn">An open SQL connection to the database you want to update.</param>
        /// <param name="logger">The stream to send logging information to.</param>
        public void UpdateDatabase(SqlConnection conn, Logger logger)
        {
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            if (Enums.Count == 0)
            {
                return;
            }

            using (logger.OpenBlock($"Updating database {conn.Database} on {conn.DataSource}"))
            {
                try
                {
                    foreach (var enumInfo in Enums)
                    {
                        var existingRows = SqlExecutor.GetTableRows(conn, enumInfo);
                        var updatePlan   = TableUpdatePlan.Create(enumInfo, existingRows);
                        SqlExecutor.UpdateTable(conn, enumInfo, updatePlan, logger);
                    }
                }
                catch (Exception ex)
                {
                    logger.Exception(ex);
                    throw new EnumsToSqlException("Unable to update database", ex, isLogged: true);
                }
            }
        }