//Overrides the binding process so we can use the correct database types
        public override void BindParameters(DbCommand command, List <Parameter> results)
        {
            if (results != null)
            {
                //Morphs the command object intot he sql version
                MySqlCommand sqlCommand = command as MySqlCommand;

                foreach (Parameter param in results)
                {
                    //Overrides the binding if its an sp variable
                    string bindingStart = (sqlCommand.CommandType == CommandType.StoredProcedure) ? "" : InternalDatabaseBinding;

                    string bindingDefinition = $"{bindingStart}{param.BindingName}";
                    sqlCommand.Parameters.AddWithValue(bindingDefinition, (param.Value ?? DBNull.Value));
                    if (param.Value != null)
                    {
                        if (param.DatabaseType != null)
                        {
                            MySQLDatabaseType dbType = param.DatabaseType as MySQLDatabaseType;
                            sqlCommand.Parameters[bindingDefinition].MySqlDbType = dbType.MySQLDBType.Value;
                        }
                        else//Use our automatic conversion system
                        {
                            MySqlDbType?dbType = BindingConvertor.ToMySqlDbType(param.Type);
                            if (dbType.HasValue)
                            {
                                sqlCommand.Parameters[bindingDefinition].MySqlDbType = dbType.Value;
                            }
                        }
                    }
                }
            }
        }
Пример #2
0
        public IGSCloudProvider BuildInfrastructure(IGSCloudProvider iGSCloudProvider, string infrastructureName)
        {
            var windowsVirtualMachine = new WindowsVirtualMachineType();
            var mySQLDatabase         = new MySQLDatabaseType();

            iGSCloudProvider.CreateInfrastructure(infrastructureName)
            .AddVirtualMachine(windowsVirtualMachine)
            .AddDatabase(mySQLDatabase);

            iGSCloudProvider.BuildResources();

            return(iGSCloudProvider);
        }
        public void SuccessWithTypesCheck()
        {
            var pms  = new { you = "test123", AGE = 11 };
            var typs = new { you = MySqlDbType.Text, AGE = MySqlDbType.Int32 };

            MySQLParameterProcessor mProcessor = new MySQLParameterProcessor("@");
            var parameters = mProcessor.GetParameters(query, pms, typs);

            Assert.IsTrue(parameters != null && parameters.Count == 2);

            MySQLDatabaseType youType = parameters.Where(p => p.BindingName == "you").First().DatabaseType as MySQLDatabaseType;
            MySQLDatabaseType AGEType = parameters.Where(p => p.BindingName == "AGE").First().DatabaseType as MySQLDatabaseType;

            Assert.IsTrue(youType.MySQLDBType == MySqlDbType.Text && AGEType.MySQLDBType == MySqlDbType.Int32);
        }
        //Overrides the updating of the database type to store our MySQL version
        protected override void AddParameterDatabaseType(Parameter parameter, string propertyName, Type propertyType, object propertyValue)
        {
            MySQLDatabaseType databaseType = new MySQLDatabaseType(propertyName, propertyType, propertyValue);

            parameter.DatabaseType = databaseType;
        }