Ejemplo n.º 1
0
        /// <summary>
        /// 根据配置创建数据库连接
        /// </summary>
        /// <returns></returns>
        public ISqlDialect CreateDialect()
        {
            ISqlDialect sqlDialect = null;

            switch (_dbType)
            {
            case DBType.SqlServer:
                sqlDialect = new SqlServerDialect();
                break;

            case DBType.MySql:
                sqlDialect = new MySqlDialect();
                break;

            case DBType.Oracle:
                sqlDialect = new OracleDialect();
                break;

            case DBType.SqlCe:
                sqlDialect = new SqlCeDialect();
                break;

            case DBType.SQLite:
                sqlDialect = new SqliteDialect();
                break;
            }
            return(sqlDialect);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 工厂模式 根据配置创建数据库
        /// </summary>
        /// <returns></returns>
        public static ISqlDialect CreateSqlDialect()
        {
            ISqlDialect sqlDialect = null;

            switch (PubConstant.DbType.ToLower())
            {
            case "mssql":
                sqlDialect = new SqlServerDialect();
                break;

            case "mysql":
                sqlDialect = new MySqlDialect();
                break;

            case "oracle":
                sqlDialect = new OracleDialect();
                break;

            case "sqlce":
                sqlDialect = new SqlCeDialect();
                break;

            case "sqlite":
                sqlDialect = new SqliteDialect();
                break;
            }
            return(sqlDialect);
        }
Ejemplo n.º 3
0
        public void PageWithWhereAndOrderByMultiLine()
        {
            var sqlDialect = new MySqlDialect();

            var sqlQuery = new SqlQuery(@"SELECT
 CustomerId,
 Name,
 DateOfBirth,
 CustomerStatusId
 FROM
 Customers
 WHERE
 CustomerStatusId = @p0
 ORDER BY
 Name ASC", CustomerStatus.Active);

            var paged = sqlDialect.PageQuery(sqlQuery, PagingOptions.ForPage(page: 1, resultsPerPage: 25));

            Assert.Equal("SELECT CustomerId, Name, DateOfBirth, CustomerStatusId FROM Customers WHERE CustomerStatusId = @p0 ORDER BY Name ASC LIMIT @p1,@p2", paged.CommandText);
            Assert.Equal(sqlQuery.Arguments[0], paged.Arguments[0]);

            Assert.Equal(DbType.Int32, paged.Arguments[1].DbType);
            Assert.Equal(0, paged.Arguments[1].Value);

            Assert.Equal(DbType.Int32, paged.Arguments[2].DbType);
            Assert.Equal(25, paged.Arguments[2].Value);
        }
Ejemplo n.º 4
0
        public void PageQueryThrowsArgumentNullExceptionForNullSqlCharacters()
        {
            var sqlDialect = new MySqlDialect();

            var exception = Assert.Throws <ArgumentNullException>(
                () => sqlDialect.PageQuery(null, PagingOptions.None));
        }
Ejemplo n.º 5
0
        private void Init(DbType dbType)
        {
            ISqlDialect dialect = null;

            switch (dbType)
            {
            case DbType.SQLServer:
                dialect = new SqlServerDialect();
                break;

            case DbType.Oracle:
                dialect = new OracleDialect();
                break;

            case DbType.DB2:
                dialect = new DB2DialectCustom();
                break;

            case DbType.MySQL:
                dialect = new MySqlDialect();
                break;

            default:
                throw new NotSupportedException("dbType");
            }

            Config       = new IdentityServerDapperExtensionsConfiguration(this, dialect);
            SqlGenerator = new SqlGeneratorImpl(Config);
            Db           = new Database(Connection, SqlGenerator);
        }
Ejemplo n.º 6
0
        public void GetTableName()
        {
            var dialect = new MySqlDialect();

            Assert.Equal("`schema`.`table` AS `t`", dialect.GetTableName("schema", "table", "t"));
            Assert.Equal("`table`", dialect.GetTableName(null, "table", null));
        }
Ejemplo n.º 7
0
        public void QuoteString()
        {
            var dialect = new MySqlDialect();

            Assert.Equal("`value`", dialect.QuoteString("value"));
            Assert.Equal("`value`", dialect.QuoteString("`value`"));
        }
Ejemplo n.º 8
0
        public void IsQuoted()
        {
            var dialect = new MySqlDialect();

            Assert.True(dialect.IsQuoted("`value`"));
            Assert.False(dialect.IsQuoted("`value"));
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Gets the Dapper Extensions Implementation
        /// </summary>
        public static IDapperImplementor Instance(DataBaseType dbType = DefaultDBType)
        {
            IDapperImplementor instance;

            if (!_instanceList.TryGetValue(dbType, out instance))
            {
                ISqlDialect sqlDialect;
                switch (dbType)
                {
                case DataBaseType.SqlServer: sqlDialect = new SqlServerDialect(); break;

                case DataBaseType.Oracle: sqlDialect = new OracleDialect(); break;

                case DataBaseType.MySql: sqlDialect = new MySqlDialect(); break;

                default: sqlDialect = new SqlServerDialect(); break;
                }
                IDapperExtensionConfiguration iDapperExtensionsConfiguration = new DapperExtensionConfiguration(
                    typeof(AutoClassMapper <>),
                    new List <Assembly>(),
                    sqlDialect
                    );
                instance = InstanceFactory(iDapperExtensionsConfiguration, dbType);
                _instanceList[dbType] = instance;
            }
            if (null == _DapperImplementor || _DapperImplementor.DbType != dbType)
            {
                _DapperImplementor = instance;
            }
            return(instance);
        }
Ejemplo n.º 10
0
 private DapperConfiguration()
 {
     AllConnectionStrings        = GetAllConnectionStrings();
     Assemblies                  = GetEntityAssemblies();
     DefaultConnectionStringName = "DefaultConnectionString";
     DefaultMapper               = typeof(AutoClassMapper <>); //TODO可以做配置
     Dialect = new MySqlDialect();                             //TODO可以做配置
 }
Ejemplo n.º 11
0
        public void FormatParameterName_ReturnsFormattedParameterName()
        {
            var expected = "?Parameter";
            var dialect  = new MySqlDialect();

            var actual = dialect.FormatParameterName("Parameter");

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 12
0
        public void FormatIdentifier_ReturnsFormattedTableName()
        {
            var expected = "`Users`";
            var dialect  = new MySqlDialect();

            var actual = dialect.FormatIdentifier("Users");

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 13
0
        public void GetTableNameShouldThrowsExceptionIfTableNameIsNullOrEmpty(string tableName)
        {
            var dialect = new MySqlDialect();

            Assert.Throws <ArgumentNullException>("tableName", () =>
            {
                dialect.GetTableName("scheme", tableName, "t");
            });
        }
Ejemplo n.º 14
0
        public void BuildSelectInsertIdSqlQuery()
        {
            var sqlDialect = new MySqlDialect();

            var sqlQuery = sqlDialect.BuildSelectInsertIdSqlQuery(ObjectInfo.For(typeof(Customer)));

            Assert.Equal("SELECT LAST_INSERT_ID()", sqlQuery.CommandText);
            Assert.Equal(0, sqlQuery.Arguments.Count);
        }
Ejemplo n.º 15
0
        public void GetPagingSql()
        {
            var dialect    = new MySqlDialect();
            var dictionary = new Dictionary <string, object>();

            Assert.Equal("select * from TestEntity LIMIT @firstResult, @maxResults", dialect.GetPagingSql("select * from TestEntity", 2, 10, dictionary));
            Assert.Equal(20, dictionary["@firstResult"]);
            Assert.Equal(10, dictionary["@maxResults"]);
        }
Ejemplo n.º 16
0
        public static void QuoteIdentifier_GivenNameWithBacktick_ReturnsQuotedIdentifier()
        {
            const string input    = "test`table";
            const string expected = "`test``table`";

            var dialect = new MySqlDialect();

            var result = dialect.QuoteIdentifier(input);

            Assert.That(result, Is.EqualTo(expected));
        }
Ejemplo n.º 17
0
        public void WriteLimit_WithNullOffset_WritesLimitWithCountOnly()
        {
            var expected = "LIMIT 10";
            var dialect  = new MySqlDialect();
            var builder  = new StringBuilder();

            using (TestSqlWriter writer = new TestSqlWriter(builder, dialect))
            {
                dialect.WriteLimit(writer, null, 10);
            }

            var actual = builder.ToString();

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 18
0
        public void PageWithNoWhereOrOrderBySecondResultsPage()
        {
            var sqlDialect = new MySqlDialect();

            var sqlQuery = new SqlQuery("SELECT CustomerId, Name, DateOfBirth, CustomerStatusId FROM Customers");

            var paged = sqlDialect.PageQuery(sqlQuery, PagingOptions.ForPage(page: 2, resultsPerPage: 25));

            Assert.Equal("SELECT CustomerId, Name, DateOfBirth, CustomerStatusId FROM Customers LIMIT @p0,@p1", paged.CommandText);

            Assert.Equal(DbType.Int32, paged.Arguments[0].DbType);
            Assert.Equal(25, paged.Arguments[0].Value);

            Assert.Equal(DbType.Int32, paged.Arguments[1].DbType);
            Assert.Equal(25, paged.Arguments[1].Value);
        }
Ejemplo n.º 19
0
        public void PageNonQualifiedWildcardQuery()
        {
            var sqlDialect = new MySqlDialect();

            var sqlQuery = new SqlQuery("SELECT * FROM Customers");

            var paged = sqlDialect.PageQuery(sqlQuery, PagingOptions.ForPage(page: 1, resultsPerPage: 25));

            Assert.Equal("SELECT * FROM Customers LIMIT @p0,@p1", paged.CommandText);

            Assert.Equal(DbType.Int32, paged.Arguments[0].DbType);
            Assert.Equal(0, paged.Arguments[0].Value);

            Assert.Equal(DbType.Int32, paged.Arguments[1].DbType);
            Assert.Equal(25, paged.Arguments[1].Value);
        }
Ejemplo n.º 20
0
        public void UpdateInstanceQuery()
        {
            ObjectInfo.MappingConvention = new ConventionMappingConvention(
                UnitTest.GetConventionMappingSettings(IdentifierStrategy.Assigned));

            var sqlDialect = new MySqlDialect();

            var customer = new Customer
            {
                Created     = new DateTime(2011, 12, 24),
                CreditLimit = 10500.00M,
                DateOfBirth = new System.DateTime(1975, 9, 18),
                Id          = 134875,
                Name        = "Joe Bloggs",
                Status      = CustomerStatus.Active,
                Updated     = DateTime.Now,
                Website     = new Uri("http://microliteorm.wordpress.com")
            };

            var sqlQuery = sqlDialect.BuildUpdateSqlQuery(ObjectInfo.For(typeof(Customer)), customer);

            Assert.Equal("UPDATE `Sales`.`Customers` SET `CreditLimit` = @p0,`DateOfBirth` = @p1,`Name` = @p2,`CustomerStatusId` = @p3,`Updated` = @p4,`Website` = @p5 WHERE (`Id` = @p6)", sqlQuery.CommandText);
            Assert.Equal(7, sqlQuery.Arguments.Count);

            Assert.Equal(DbType.Decimal, sqlQuery.Arguments[0].DbType);
            Assert.Equal(customer.CreditLimit, sqlQuery.Arguments[0].Value);

            Assert.Equal(DbType.DateTime, sqlQuery.Arguments[1].DbType);
            Assert.Equal(customer.DateOfBirth, sqlQuery.Arguments[1].Value);

            Assert.Equal(DbType.String, sqlQuery.Arguments[2].DbType);
            Assert.Equal(customer.Name, sqlQuery.Arguments[2].Value);

            Assert.Equal(DbType.Int32, sqlQuery.Arguments[3].DbType);
            Assert.Equal((int)customer.Status, sqlQuery.Arguments[3].Value);

            Assert.Equal(DbType.DateTime, sqlQuery.Arguments[4].DbType);
            Assert.Equal(customer.Updated, sqlQuery.Arguments[4].Value);

            Assert.Equal(DbType.String, sqlQuery.Arguments[5].DbType);
            Assert.Equal("http://microliteorm.wordpress.com/", sqlQuery.Arguments[5].Value);

            Assert.Equal(DbType.Int32, sqlQuery.Arguments[6].DbType);
            Assert.Equal(customer.Id, sqlQuery.Arguments[6].Value);
        }
Ejemplo n.º 21
0
        private Database CreateDatabase()
        {
            ISqlDialect   sqlDialect = null;
            IDbConnection connection = null;

            switch (_dataBaseType.ToLower())
            {
            case "mysql":
            {
                connection = new MySqlConnection(_connectionString);
                sqlDialect = new MySqlDialect();
            }
            break;

            case "sqlserver":
            {
                connection = new SqlConnection(_connectionString);
                sqlDialect = new SqlServerDialect();
            }
            break;

            case "oracle":
            {
            }
            break;

            case "sqlite":
            {
                //connection = new SQLiteConnection(_connectionString);
                sqlDialect = new SqliteDialect();
            }
            break;

            default:
                break;
            }

            var config       = new DapperExtensionsConfiguration(typeof(AutoClassMapper <>), new List <Assembly>(), sqlDialect);
            var sqlGenerator = new SqlGeneratorImpl(config);

            //if (connection.State != ConnectionState.Open)
            //    connection.Open();

            return(new Database(connection, sqlGenerator));
        }
Ejemplo n.º 22
0
        public void InsertInstanceQueryForIdentifierStrategyDbGenerated()
        {
            ObjectInfo.MappingConvention = new ConventionMappingConvention(
                UnitTest.GetConventionMappingSettings(IdentifierStrategy.DbGenerated));

            var sqlDialect = new MySqlDialect();

            var customer = new Customer
            {
                Created     = new DateTime(2011, 12, 24),
                CreditLimit = 10500.00M,
                DateOfBirth = new System.DateTime(1975, 9, 18),
                Name        = "Joe Bloggs",
                Status      = CustomerStatus.Active,
                Updated     = DateTime.Now,
                Website     = new Uri("http://microliteorm.wordpress.com")
            };

            var sqlQuery = sqlDialect.BuildInsertSqlQuery(ObjectInfo.For(typeof(Customer)), customer);

            Assert.Equal("INSERT INTO `Sales`.`Customers` (`Created`,`CreditLimit`,`DateOfBirth`,`Name`,`CustomerStatusId`,`Website`) VALUES (@p0,@p1,@p2,@p3,@p4,@p5)", sqlQuery.CommandText);
            Assert.Equal(6, sqlQuery.Arguments.Count);

            Assert.Equal(DbType.DateTime, sqlQuery.Arguments[0].DbType);
            Assert.Equal(customer.Created, sqlQuery.Arguments[0].Value);

            Assert.Equal(DbType.Decimal, sqlQuery.Arguments[1].DbType);
            Assert.Equal(customer.CreditLimit, sqlQuery.Arguments[1].Value);

            Assert.Equal(DbType.DateTime, sqlQuery.Arguments[2].DbType);
            Assert.Equal(customer.DateOfBirth, sqlQuery.Arguments[2].Value);

            Assert.Equal(DbType.String, sqlQuery.Arguments[3].DbType);
            Assert.Equal(customer.Name, sqlQuery.Arguments[3].Value);

            Assert.Equal(DbType.Int32, sqlQuery.Arguments[4].DbType);
            Assert.Equal((int)customer.Status, sqlQuery.Arguments[4].Value);

            Assert.Equal(DbType.String, sqlQuery.Arguments[5].DbType);
            Assert.Equal("http://microliteorm.wordpress.com/", sqlQuery.Arguments[5].Value);
        }
        public static ISqlDialect ConvertESqlDialect(ESqlDialect sqlDialect)
        {
            ISqlDialect SqlDialect = null;

            switch (sqlDialect)
            {
            case ESqlDialect.DB2:
                SqlDialect = new DB2Dialect();
                break;

            case ESqlDialect.MySQL:
                SqlDialect = new MySqlDialect();
                break;

            case ESqlDialect.Oracle:
                SqlDialect = new OracleDialect();
                break;

            case ESqlDialect.PostgreSql:
                SqlDialect = new PostgreSqlDialect();
                break;

            case ESqlDialect.SqlCe:
                SqlDialect = new SqlCeDialect();
                break;

            case ESqlDialect.Sqlite:
                SqlDialect = new SqliteDialect();
                break;

            case ESqlDialect.SqlServer:
                SqlDialect = new SqlServerDialect();
                break;
            }
            return(SqlDialect);
        }
Ejemplo n.º 24
0
        public static void QuoteName_GivenNullOrWhiteSpaceName_ThrowsArgumentNullException(string name)
        {
            var dialect = new MySqlDialect();

            Assert.That(() => dialect.QuoteName(name), Throws.ArgumentNullException);
        }
Ejemplo n.º 25
0
        public static void QuoteIdentifier_GivenNullOrWhiteSpaceIdentifier_ThrowsArgumentNullException(string identifier)
        {
            var dialect = new MySqlDialect();

            Assert.That(() => dialect.QuoteIdentifier(identifier), Throws.ArgumentNullException);
        }
Ejemplo n.º 26
0
        /// <summary>
        /// 活动Dapper扩展对象的实例
        /// </summary>
        /// <param name="dbType">DB类型,默认SqlServer</param>
        /// <param name="ormMapperAssemblyList">ORM映射的程序集</param>
        /// <returns></returns>
        public static IDapperImplementor Instance(DataBaseType dbType = DefaultDBType, List <string> ormMapperAssemblyList = null)
        {
            IDapperImplementor instance;

            if (!_instanceList.TryGetValue(dbType, out instance))
            {
                ISqlDialect sqlDialect;
                switch (dbType)
                {
                case DataBaseType.SqlServer: sqlDialect = new SqlServerDialect(); break;

                case DataBaseType.Oracle: sqlDialect = new OracleDialect(); break;

                case DataBaseType.MySql: sqlDialect = new MySqlDialect(); break;

                default: sqlDialect = new SqlServerDialect(); break;
                }
                List <Assembly> assemblyList = new List <Assembly>();
                if (ormMapperAssemblyList != null)
                {
                    foreach (var item in ormMapperAssemblyList)
                    {
                        assemblyList.Add(Assembly.Load(item));
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(ormMapperAssemblyStr))
                    {
                        foreach (var item in ormMapperAssemblyStr.Split(';'))
                        {
                            if (!string.IsNullOrEmpty(item))
                            {
                                assemblyList.Add(Assembly.Load(item));
                            }
                        }
                    }
                }
                IDapperExtensionConfiguration iDapperExtensionsConfiguration = new DapperExtensionConfiguration(
                    typeof(AutoClassMapper <>),
                    assemblyList,
                    sqlDialect
                    );
                instance = InstanceFactory(iDapperExtensionsConfiguration, dbType);
                _instanceList[dbType] = instance;
            }
            if (!IsEnabledMultipleDBType)
            {
                if (null == _DapperImplementor)
                {
                    _DapperImplementor = instance;
                }
            }
            else
            {
                if (null == _DapperImplementor_MultipleDBType || _DapperImplementor_MultipleDBType.DbType != dbType)
                {
                    _DapperImplementor_MultipleDBType = instance;
                }
            }
            return(instance);
        }
 public void SetUp()
 {
     _dialect = new MySqlDialect();
 }
Ejemplo n.º 28
0
 public MySqlDialectDataTests()
 {
     _dialect = new MySqlDialect();
 }
Ejemplo n.º 29
0
 static MySqlBulkCopy()
 {
     Dialect = new MySqlDialect();
 }
Ejemplo n.º 30
0
        public void SupportsSelectInsertedIdentifierReturnsTrue()
        {
            var sqlDialect = new MySqlDialect();

            Assert.True(sqlDialect.SupportsSelectInsertedIdentifier);
        }