Beispiel #1
0
        protected void PerformFullTableCheck(IManageable model, string connectionToUse)
        {
            if (model.IsFullyValidated)
            {
                Logger.Info($"Table {model.Configuration.TableName} has already been validated with it's current state.");
                return;
            }

            Logger.Info($"Processing table {model.Configuration.TableName} using connection {connectionToUse}.");
            model.IsFullyValidated = true;
            string schema         = Manager.ConnectionType == ConnectionTypes.MSSQL ? model.Configuration.Schema : ConsolidationTools.GetInitialCatalog(connectionToUse, true);
            string initialCatalog = ConsolidationTools.GetInitialCatalog(connectionToUse);
            Dictionary <string, ConstraintDefinition> constraints = GetConstraints(initialCatalog, schema, model.Configuration.TableName, connectionToUse);

            if (DoTableExist(initialCatalog, schema, model.Configuration.TableName, connectionToUse))
            {
                ExecuteScalar(_creator.CreateQueryForTableAlteration(model, GetColumnDefinition(initialCatalog, model.Configuration.Schema, model.Configuration.TableName, connectionToUse), constraints), connectionToUse, false);
            }
            else
            {
                ExecuteScalar(_creator.CreateQueryForTableCreation(model), connectionToUse, false);
            }

            VerifyForeignTables(model, connectionToUse);
            string foreignKeyQuery = _creator.GetCreateForeignKeysQuery(model, constraints);

            if (!string.IsNullOrWhiteSpace(foreignKeyQuery))
            {
                ExecuteScalar(foreignKeyQuery, connectionToUse, false);
            }
        }
Beispiel #2
0
        protected void PerformStoredProcedureValidation <T>(TransactionTypes transactionType, QueryOptions queryOptions) where T : Cope <T>, IManageable, new()
        {
            TransactionTypes singleTransactionType;

            switch (transactionType)
            {
            case TransactionTypes.InsertMassive:
                singleTransactionType = TransactionTypes.Insert;
                break;

            case TransactionTypes.UpdateMassive:
                singleTransactionType = TransactionTypes.Update;
                break;

            case TransactionTypes.DeleteMassive:
                singleTransactionType = TransactionTypes.Delete;
                break;

            default:
                throw new NotSupportedException($"El tipo de transaccion {transactionType.ToString()} no puede ser utilizado con esta funcion.");
            }

            string schema = Manager.ConnectionType == ConnectionTypes.MSSQL ? Cope <T> .ModelComposition.Schema : ConsolidationTools.GetInitialCatalog(queryOptions.ConnectionToUse, true);

            if (!DoStoredProcedureExist(ConsolidationTools.GetInitialCatalog(queryOptions.ConnectionToUse), schema, $"{Manager.StoredProcedurePrefix}massive_operation", queryOptions.ConnectionToUse))
            {
                ExecuteScalar(GetTransactionTextForProcedure <T>(transactionType, false), queryOptions.ConnectionToUse, false);
            }

            if (!DoStoredProcedureExist(ConsolidationTools.GetInitialCatalog(queryOptions.ConnectionToUse), schema, $"{Manager.StoredProcedurePrefix}{Cope<T>.ModelComposition.TableName}{GetFriendlyTransactionSuffix(singleTransactionType)}", queryOptions.ConnectionToUse))
            {
                ExecuteScalar(GetTransactionTextForProcedure <T>(singleTransactionType, false), queryOptions.ConnectionToUse, false);
            }
        }
Beispiel #3
0
 internal static void GetPrefixesAndSuffixes()
 {
     Logger.Info("Getting Manager configuration for prefixes and suffixes.");
     InsertSuffix          = ConsolidationTools.GetValueFromConfiguration("InsertSuffix", ConfigurationTypes.AppSetting);
     UpdateSuffix          = ConsolidationTools.GetValueFromConfiguration("UpdateSuffix", ConfigurationTypes.AppSetting);
     DeleteSuffix          = ConsolidationTools.GetValueFromConfiguration("DeleteSuffix", ConfigurationTypes.AppSetting);
     StoredProcedurePrefix = ConsolidationTools.GetValueFromConfiguration("StoredProcedurePrefix", ConfigurationTypes.AppSetting);
     TablePrefix           = ConsolidationTools.GetValueFromConfiguration("TablePrefix", ConfigurationTypes.AppSetting);
 }
Beispiel #4
0
 private static string GetConnectionString(string connectionToUse)
 {
     try
     {
         return(ConsolidationTools.GetValueFromConfiguration(connectionToUse, ConfigurationTypes.ConnectionString));
     }
     catch (ConfigurationErrorsException cee)
     {
         Logger.Error(cee);
         throw cee;
     }
 }
Beispiel #5
0
 internal static void GetConfigurationSettings()
 {
     DefaultConnection          = ConsolidationTools.GetValueFromConfiguration("DefaultConnection", ConfigurationTypes.AppSetting);
     DefaultSchema              = ConsolidationTools.GetValueFromConfiguration("DefaultSchema", ConfigurationTypes.AppSetting);
     ConnectionType             = (ConnectionTypes)Enum.Parse(typeof(ConnectionTypes), ConsolidationTools.GetValueFromConfiguration("ConnectionType", ConfigurationTypes.AppSetting));
     AutoCreateStoredProcedures = bool.Parse(ConsolidationTools.GetValueFromConfiguration("AutoCreateStoredProcedures", ConfigurationTypes.AppSetting));
     AutoCreateTables           = bool.Parse(ConsolidationTools.GetValueFromConfiguration("AutoCreateTables", ConfigurationTypes.AppSetting));
     EnableLogInDatabase        = bool.Parse(ConsolidationTools.GetValueFromConfiguration("EnableLogInDatabase", ConfigurationTypes.AppSetting));
     EnableLogInFile            = bool.Parse(ConsolidationTools.GetValueFromConfiguration("EnableLogInFile", ConfigurationTypes.AppSetting));
     ConstantTableConsolidation = bool.Parse(ConsolidationTools.GetValueFromConfiguration("ConstantTableConsolidation", ConfigurationTypes.AppSetting));
     AutoAlterStoredProcedures  = bool.Parse(ConsolidationTools.GetValueFromConfiguration("AutoAlterStoredProcedures", ConfigurationTypes.AppSetting));
     AutoAlterTables            = bool.Parse(ConsolidationTools.GetValueFromConfiguration("AutoAlterTables", ConfigurationTypes.AppSetting));
     Logger.Info("Got Manager configuration settings.");
 }
Beispiel #6
0
        /// <summary>
        /// Valida que no exista una sola propiedad con valor nulo.
        /// </summary>
        /// <returns>Regresa el objeto que fue validado.</returns>
        public static T Validate <T>(this T obj)
        {
            ConsolidationTools.PerformNullValidation(obj, true);

            return(obj);
        }
Beispiel #7
0
 /// <summary>
 /// Valida que no exista una sola propiedad con valor nulo.
 /// </summary>
 /// <returns>Regresa True cuando el objeto tiene todas las propiedades asignadas.</returns>
 public static bool Validate(this object obj, bool throwError = true)
 {
     return(ConsolidationTools.PerformNullValidation(obj, throwError));
 }
Beispiel #8
0
 /// <summary>
 /// Asigna los valores proporcionados en las propiedades correspondientes a la instancia del objeto de tipo <typeparamref name="T"/>. Solo se aceptan valores originados desde un objeto anonimo o predefinidos del mismo tipo enviado.
 /// </summary>
 /// <typeparam name="T">El tipo del objeto a asignar.</typeparam>
 /// <param name="values">Los valores usados en la asignacion de las propiedades. Se admiten objetos anonimos o predefinidos del mismo tipo enviado.</param>
 /// <returns>Regresa el objeto ya alimentado de los valores.</returns>
 public static bool FillAndValidate <T>(this T obj, dynamic values)
 {
     return(Validate(ConsolidationTools.SetValuesIntoObjectOfType(obj, values), true));
 }
Beispiel #9
0
 /// <summary>
 /// Asigna los valores proporcionados en las propiedades correspondientes a la instancia del objeto de tipo <typeparamref name="T"/>. Solo se aceptan valores originados desde un objeto anonimo o predefinidos del mismo tipo enviado.
 /// </summary>
 /// <typeparam name="T">El tipo del objeto a asignar.</typeparam>
 /// <param name="values">Los valores usados en la asignacion de las propiedades. Se admiten objetos anonimos o predefinidos del mismo tipo enviado.</param>
 /// <returns>Regresa el objeto ya alimentado de los valores.</returns>
 public static T Fill <T>(this T obj, dynamic values)
 {
     return(ConsolidationTools.SetValuesIntoObjectOfType(obj, values));
 }
Beispiel #10
0
        private void VerifyForeignTables(IManageable model, string connectionToUse)
        {
            Logger.Info(string.Format("Verifying foreign tables for type {0} using connection {1}.", model.GetType().ToString(), connectionToUse));

            foreach (KeyValuePair <string, PropertyInfo> property in model.Configuration.ForeignKeyProperties)
            {
                IManageable foreignModel = (IManageable)Activator.CreateInstance(model.Configuration.ForeignKeyAttributes[property.Value.Name].Model);
                string      schema       = Manager.ConnectionType == ConnectionTypes.MSSQL ? foreignModel.Configuration.Schema : ConsolidationTools.GetInitialCatalog(connectionToUse, true);
                PerformFullTableCheck(foreignModel, connectionToUse);
            }
        }