Ejemplo n.º 1
0
        public static Schema CreateFromConnection(ConnectionInfo conInfo)
        {
            Schema schema = new Schema();
            schema.CatalogName = conInfo.Catalog;
            schema.Name = conInfo.Schema;
            
            IConnectionFactory fac = null;
            ISqlConf sqlConf = null;
            if (conInfo.Type == ConnectionType.SqlServer)
            {
                fac = new SqlServerConnectionFactory();
                sqlConf = new SQLServerDefaultConf();
                schema.Platform = "SQLSERVER";
            }
            else if (conInfo.Type == ConnectionType.MySql)
            {
                fac = new MySqlConnectionFactory();
                sqlConf = new MySqlDefaultConf();
                schema.Platform = "MYSQL";
            }

            using (IDbConnection conn = fac.CreateConnection(conInfo))
            {
                conn.Open();
                IDatabaseExplorer dbExplorer = new DatabaseExplorer(conn, sqlConf);
                schema.Tables = dbExplorer.GetTables(schema).ToList<Table>();
                schema.StoredProcedures = dbExplorer.GetStoredProcedures(schema).ToList<StoredProcedure>();   
            }
            return schema;
        }
Ejemplo n.º 2
0
        public void CreateConnectionDb_NotNull()
        {
            var sut    = new MySqlConnectionFactory();
            var result = sut.CreateConnectionDb("");

            Assert.NotNull(result);
        }
Ejemplo n.º 3
0
        public static IDbConnection Create(Connection cn)
        {
            IDbConnection output;

            switch (cn.Provider)
            {
            case "sqlserver":
                output = new SqlServerConnectionFactory(cn).GetConnection();
                break;

            case "mysql":
                output = new MySqlConnectionFactory(cn).GetConnection();
                break;

            case "postgresql":
                output = new PostgreSqlConnectionFactory(cn).GetConnection();
                break;

            case "sqlite":
                output = new SqLiteConnectionFactory(cn).GetConnection();
                break;

            case "sqlce":
                output = new SqlCeConnectionFactory(cn).GetConnection();
                break;

            default:
                throw new DataException($"Provider {cn.Provider} is not supported!");
            }
            output.Open();
            return(output);
        }
Ejemplo n.º 4
0
        public void CreateDataAdapter_NotNull()
        {
            var sut    = new MySqlConnectionFactory();
            var result = sut.CreateDataAdapter("");

            Assert.NotNull(result);
        }
Ejemplo n.º 5
0
        private static async Task Main(string[] args)
        {
            await SetupAsync();

            var services = new ServiceCollection();

            services.AddLogging(o => o.AddConsole());

            var connection = new MySqlConnectionOptions
            {
                Host     = Host,
                Username = "******",
                Password = "******",
                Database = "test_db"
            };

            var connFactory = new MySqlConnectionFactory(new ConnectionFactoryOptions <MySqlConnectionOptions>
            {
                Write = connection,
                Read  = connection
            });

            var serviceProvider = services.BuildServiceProvider();

            var loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>();
            var logger        = serviceProvider.GetRequiredService <ILogger <Program> >();

            var testRepo = new TestRepo(connFactory, new MySqlRepositoryOptions
            {
                FailOverRetryCount = 10,
                LoggerFactory      = loggerFactory
            });

            logger.LogInformation("Starting...");

            if (args.Contains("-write"))
            {
                while (true)
                {
                    logger.LogInformation("Writing...");

                    await testRepo.WriteAsync("INSERT IGNORE INTO `test_table` VALUES (1);");

                    await Task.Delay(TimeSpan.FromSeconds(1));
                }
            }

            if (args.Contains("-read"))
            {
                while (true)
                {
                    logger.LogInformation("Reading...");

                    await testRepo.ReadAsync <int>("SELECT * FROM `test_table`;");

                    await Task.Delay(TimeSpan.FromSeconds(1));
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 初始化MySql数据库连接工厂
        /// </summary>
        public virtual void InitConnectionFactory()
        {
            var connectionFactory = new MySqlConnectionFactory();

#pragma warning disable 618
            Database.DefaultConnectionFactory = connectionFactory;
#pragma warning restore 618
        }
Ejemplo n.º 7
0
        public void InitConnectionFactory()
        {
            var connectionFactory = new MySqlConnectionFactory();

            //TODO fix compilation warning (below)
#pragma warning disable 0618
            Database.DefaultConnectionFactory = connectionFactory;
        }
Ejemplo n.º 8
0
        public static void CreateConnection_WhenInvoked_ReturnsConnectionInClosedState()
        {
            var factory = new MySqlConnectionFactory("Server=127.0.0.1;");

            using var connection = factory.CreateConnection();

            Assert.That(connection.State, Is.EqualTo(ConnectionState.Closed));
        }
        public void GetReadConnection()
        {
            var factory = new MySqlConnectionFactory(new ConnectionFactoryOptions <MySqlConnectionOptions>
            {
                Read = new MySqlConnectionOptions()
            });

            var readConn = factory.GetReadConnection();

            Assert.NotNull(readConn);
        }
        public void GetWriteConnection()
        {
            var factory = new MySqlConnectionFactory(new ConnectionFactoryOptions <MySqlConnectionOptions>
            {
                Write = new MySqlConnectionOptions()
            });

            var writeConn = factory.GetWriteConnection();

            Assert.NotNull(writeConn);
        }
Ejemplo n.º 11
0
        public static void Create(out IMySqlConnectionFactory conn)
        {
            conn = new MySqlConnectionFactory(GetConnectionString(), GetDatabaseNameString());

            var sqlCreate = $"create database if not exists `mysqlcoretest`";

            using (var c = conn.GetAsync("sys").Result)
            {
                c.ExecuteAsync(sqlCreate).Wait();
            }
        }
Ejemplo n.º 12
0
        public static DbConnection CreateConnection(string host, string user, string password, string database, int port, bool pooling, int minPoolSize, int maxPoolSize)
        {
            var pools = string.Format(";Min Pool Size={0};Max Pool Size={1}", minPoolSize, maxPoolSize);

            var connectionString = "Server=" + host + ";User Id=" + user + ";Port=" + port + ";" +
                                   "Password="******";Database=" + database + ";Allow Zero Datetime=True;" +
                                   "Pooling=" + pooling + ";CharSet=utf8";

            if (pooling)
            {
                connectionString += pools;
            }

            var factory = new MySqlConnectionFactory();

            return(factory.CreateConnection(connectionString));
        }
Ejemplo n.º 13
0
        private static DbConnection BuildConnection(IConnectionSettings connectionSettings)
        {
            if (null == connectionSettings)
            {
                connectionSettings = ConnectionSettings;
            }

            switch (connectionSettings.ProviderInvariantName)
            {
            case DataConfiguration.SqlServerCompactProviderInvariantName:
            {
                var connectionFactory =
                    new SqlCeConnectionFactory(DataConfiguration.SqlServerCompactProviderInvariantName);
                return(connectionFactory.CreateConnection(connectionSettings.ConnectionString));
            }

            case DataConfiguration.SqlServerProviderInvariantName:
            {
                var connectionFactory = new SqlConnectionFactory();
                return(connectionFactory.CreateConnection(connectionSettings.ConnectionString));
            }

            case DataConfiguration.MySqlProviderInvariantName:
            {
                var connectionFactory = new MySqlConnectionFactory();
                return(connectionFactory.CreateConnection(connectionSettings.ConnectionString));
            }

            case DataConfiguration.PostgreSqlProviderInvariantName:
            {
                var connectionFactory = new NpgsqlConnectionFactory();
                return(connectionFactory.CreateConnection(connectionSettings.ConnectionString));
            }

            case DataConfiguration.OracleDBProviderInvariantName:
            {
                var connectionFactory = new OracleConnectionFactory();
                return(connectionFactory.CreateConnection(connectionSettings.ConnectionString));
            }

            default:
                throw new InvalidOperationException("connectionSettings.ProviderInvariantName == " +
                                                    connectionSettings.ProviderInvariantName);
            }
        }
Ejemplo n.º 14
0
        private static Guid CreateDatabase()
        {
            var database         = Guid.NewGuid();
            var connectionString = string.Format("Server=localhost;Uid={0};Pwd={1};", ConfigurationManager.AppSettings["MySQLUser"], ConfigurationManager.AppSettings["MySQLPassword"]);
            var factory          = new MySqlConnectionFactory {
                ConnectionString = connectionString
            };

            using (var connection = factory.CreateConnection())
            {
                connection.Open();
                var sql = string.Format("CREATE DATABASE `{0}`", database);
                connection.Execute(sql);
                sql = string.Format("USE `{0}`", database);
                connection.Execute(sql);
            }
            return(database);
        }
Ejemplo n.º 15
0
        private static async Task SetupAsync()
        {
            var connFactory = new MySqlConnectionFactory(new ConnectionFactoryOptions <MySqlConnectionOptions>
            {
                Write = new MySqlConnectionOptions
                {
                    Host     = Host,
                    Username = RootUser,
                    Password = RootPwd
                }
            });

            var testRepo = new TestRepo(connFactory);

            await testRepo.WriteAsync("CREATE SCHEMA IF NOT EXISTS test_db; " +
                                      "CREATE TABLE IF NOT EXISTS `test_db`.`test_table` (id int PRIMARY KEY);" +
                                      "CREATE USER IF NOT EXISTS 'testusr'@'%' IDENTIFIED BY 'testpw';" +
                                      "GRANT INSERT,SELECT ON test_db.test_table TO 'testusr'@'%';" +
                                      "FLUSH PRIVILEGES;"
                                      );
        }
Ejemplo n.º 16
0
        static void Main(string[] args)
        {
            MySqlConnectionFactory factory    = new MySqlConnectionFactory();
            MySqlConnection        connection = factory.CreateConnection(null);

            connection.Open();
            MySqlCommand     command     = new MySqlCommand("select * from athletes", connection);
            MySqlDataAdapter dataAdapter = new MySqlDataAdapter(command);
            DataSet          dataSet     = new DataSet();


            dataAdapter.Fill(dataSet);
            var dataR = command.ExecuteReader();

            if (dataR.Read())
            {
                string name = dataR.GetString(1);
                Console.Write(name);
            }


            Console.Write(connection);
            Console.Read();
        }
Ejemplo n.º 17
0
 public BudgetStore(MySqlConnectionFactory mySqlConnectionFactory)
 {
     _mySqlConnectionFactory = mySqlConnectionFactory;
 }
        public void Integration()
        {
            var builder = new ContainerBuilder();

            builder.RegisterModule(new RootModule(@"Files\Shorthand.xml"));
            var container = builder.Build();

            // CORRECT DATA AND INITIAL LOAD
            using (var cn = new SqlServerConnectionFactory(InputConnection).GetConnection()) {
                cn.Open();
                Assert.AreEqual(2, cn.Execute(@"
                    UPDATE [Order Details] SET UnitPrice = 14.40, Quantity = 42 WHERE OrderId = 10253 AND ProductId = 39;
                    UPDATE Orders SET CustomerID = 'CHOPS', Freight = 22.98 WHERE OrderId = 10254;
                "));
            }

            var root     = ResolveRoot(container, TestFile, true);
            var response = new PipelineAction(root).Execute();

            Assert.AreEqual(200, response.Code);
            Assert.AreEqual(string.Empty, response.Content);

            using (var cn = new MySqlConnectionFactory(OutputConnection).GetConnection()) {
                cn.Open();
                Assert.AreEqual(2155, cn.ExecuteScalar <int>("SELECT COUNT(*) FROM NorthWindStar;"));
                Assert.AreEqual(2155, cn.ExecuteScalar <int>("SELECT Inserts FROM NorthWindControl WHERE Entity = 'Order Details' AND BatchId = 1 LIMIT 1;"));
            }

            // FIRST DELTA, NO CHANGES
            root     = ResolveRoot(container, TestFile, false);
            response = new PipelineAction(root).Execute();

            Assert.AreEqual(200, response.Code);
            Assert.AreEqual(string.Empty, response.Content);

            using (var cn = new MySqlConnectionFactory(OutputConnection).GetConnection()) {
                cn.Open();
                Assert.AreEqual(2155, cn.ExecuteScalar <int>("SELECT COUNT(*) FROM NorthWindStar;"));
                Assert.AreEqual(0, cn.ExecuteScalar <int>("SELECT Inserts+Updates+Deletes FROM NorthWindControl WHERE Entity = 'Order Details' AND BatchId = 9 LIMIT 1;"));
            }


            // CHANGE 2 FIELDS IN 1 RECORD IN MASTER TABLE THAT WILL CAUSE CALCULATED FIELD TO BE UPDATED TOO
            using (var cn = new SqlServerConnectionFactory(InputConnection).GetConnection()) {
                cn.Open();
                const string sql = @"UPDATE [Order Details] SET UnitPrice = 15, Quantity = 40 WHERE OrderId = 10253 AND ProductId = 39;";
                Assert.AreEqual(1, cn.Execute(sql));
            }

            root     = ResolveRoot(container, TestFile, false);
            response = new PipelineAction(root).Execute();

            Assert.AreEqual(200, response.Code);
            Assert.AreEqual(string.Empty, response.Content);

            using (var cn = new MySqlConnectionFactory(OutputConnection).GetConnection()) {
                cn.Open();
                Assert.AreEqual(1, cn.ExecuteScalar <int>("SELECT Updates FROM NorthWindControl WHERE Entity = 'Order Details' AND BatchId = 17 LIMIT 1;"));
                Assert.AreEqual(15.0, cn.ExecuteScalar <decimal>("SELECT OrderDetailsUnitPrice FROM NorthWindStar WHERE OrderDetailsOrderId= 10253 AND OrderDetailsProductId = 39;"));
                Assert.AreEqual(40, cn.ExecuteScalar <int>("SELECT OrderDetailsQuantity FROM NorthWindStar WHERE OrderDetailsOrderId= 10253 AND OrderDetailsProductId = 39;"));
                Assert.AreEqual(15.0 * 40, cn.ExecuteScalar <int>("SELECT OrderDetailsExtendedPrice FROM NorthWindStar WHERE OrderDetailsOrderId= 10253 AND OrderDetailsProductId = 39;"));
            }

            // CHANGE 1 RECORD'S CUSTOMERID AND FREIGHT ON ORDERS TABLE
            using (var cn = new SqlServerConnectionFactory(InputConnection).GetConnection()) {
                cn.Open();
                Assert.AreEqual(1, cn.Execute("UPDATE Orders SET CustomerID = 'VICTE', Freight = 20.11 WHERE OrderId = 10254;"));
            }

            root     = ResolveRoot(container, TestFile, false);
            response = new PipelineAction(root).Execute();

            Assert.AreEqual(200, response.Code);
            Assert.AreEqual(string.Empty, response.Content);

            using (var cn = new MySqlConnectionFactory(OutputConnection).GetConnection()) {
                cn.Open();
                Assert.AreEqual(1, cn.ExecuteScalar <int>("SELECT Updates FROM NorthWindControl WHERE Entity = 'Orders' AND BatchId = 26;"));
                Assert.AreEqual("VICTE", cn.ExecuteScalar <string>("SELECT OrdersCustomerId FROM NorthWindStar WHERE OrderDetailsOrderId= 10254;"));
                Assert.AreEqual(20.11, cn.ExecuteScalar <decimal>("SELECT OrdersFreight FROM NorthWindStar WHERE OrderDetailsOrderId= 10254;"));
            }
        }
Ejemplo n.º 19
0
 public MySqlCategoriesStore(MySqlConnectionFactory mySqlConnectionFactory)
 {
     _mySqlConnectionFactory = mySqlConnectionFactory;
 }
Ejemplo n.º 20
0
 public MySqlReportsProvider(MySqlConnectionFactory mySqlConnectionFactory)
 {
     _mySqlConnectionFactory = mySqlConnectionFactory;
 }
Ejemplo n.º 21
0
        public static DbConnection GetMySqlConnection(string connectionString)
        {
            var connectionFactory = new MySqlConnectionFactory();

            return(connectionFactory.CreateConnection(connectionString));
        }
Ejemplo n.º 22
0
        /// <summary>
        /// Initialize connection factory
        /// </summary>
        public virtual void InitConnectionFactory() {
            var connectionFactory = new MySqlConnectionFactory();
#pragma warning disable 0618
            Database.DefaultConnectionFactory = connectionFactory;
        }
        public static DbConnection GetMySqlConnection(string connectionString)
        {
            var connectionFactory = new MySqlConnectionFactory();

            return connectionFactory.CreateConnection(connectionString);
        }
Ejemplo n.º 24
0
 public MySqlTagStore(MySqlConnectionFactory mySqlConnectionFactory)
 {
     _mySqlConnectionFactory = mySqlConnectionFactory;
 }
Ejemplo n.º 25
0
 public MySqlTransactionStore(MySqlConnectionFactory mySqlConnectionFactory)
 {
     _mySqlConnectionFactory = mySqlConnectionFactory;
 }
Ejemplo n.º 26
0
        //[Ignore("Needs local sql server and mysql databases and you have to set the password (above)")]
        public void Integration()
        {
            var logger = new ConsoleLogger(LogLevel.Debug);

            // CORRECT DATA AND INITIAL LOAD
            using (var cn = new SqlServerConnectionFactory(InputConnection).GetConnection()) {
                cn.Open();
                Assert.AreEqual(2, cn.Execute(@"
                    UPDATE [Order Details] SET UnitPrice = 14.40, Quantity = 42 WHERE OrderId = 10253 AND ProductId = 39;
                    UPDATE Orders SET CustomerID = 'CHOPS', Freight = 22.98 WHERE OrderId = 10254;
                "));
            }

            using (var outer = new ConfigurationContainer().CreateScope(TestFile + $"?Mode=init&Password={Password}", logger)) {
                var process = outer.Resolve <Process>();
                using (var inner = new Container(new MySqlModule(), new SqlServerModule(), new JintTransformModule()).CreateScope(process, logger)) {
                    var controller = inner.Resolve <IProcessController>();
                    controller.Execute();
                }
            }

            using (var cn = new MySqlConnectionFactory(OutputConnection).GetConnection()) {
                cn.Open();
                Assert.AreEqual(2155, cn.ExecuteScalar <int>("SELECT COUNT(*) FROM NorthWindStar;"));
                Assert.AreEqual(2155, cn.ExecuteScalar <int>("SELECT Inserts FROM NorthWindControl WHERE Entity = 'Order Details' AND BatchId = 1 LIMIT 1;"));
            }

            // FIRST DELTA, NO CHANGES
            using (var outer = new ConfigurationContainer().CreateScope(TestFile + $"?Password={Password}", logger)) {
                var process = outer.Resolve <Process>();
                using (var inner = new Container(new MySqlModule(), new SqlServerModule(), new JintTransformModule()).CreateScope(process, logger)) {
                    var controller = inner.Resolve <IProcessController>();
                    controller.Execute();
                }
            }

            using (var cn = new MySqlConnectionFactory(OutputConnection).GetConnection()) {
                cn.Open();
                Assert.AreEqual(2155, cn.ExecuteScalar <int>("SELECT COUNT(*) FROM NorthWindStar;"));
                Assert.AreEqual(0, cn.ExecuteScalar <int>("SELECT Inserts+Updates+Deletes FROM NorthWindControl WHERE Entity = 'Order Details' AND BatchId = 9 LIMIT 1;"));
            }


            // CHANGE 2 FIELDS IN 1 RECORD IN MASTER TABLE THAT WILL CAUSE CALCULATED FIELD TO BE UPDATED TOO
            using (var cn = new SqlServerConnectionFactory(InputConnection).GetConnection()) {
                cn.Open();
                const string sql = @"UPDATE [Order Details] SET UnitPrice = 15, Quantity = 40 WHERE OrderId = 10253 AND ProductId = 39;";
                Assert.AreEqual(1, cn.Execute(sql));
            }

            using (var outer = new ConfigurationContainer().CreateScope(TestFile + $"?Password={Password}", logger)) {
                var process = outer.Resolve <Process>();
                using (var inner = new Container(new MySqlModule(), new SqlServerModule(), new JintTransformModule()).CreateScope(process, logger)) {
                    var controller = inner.Resolve <IProcessController>();
                    controller.Execute();
                }
            }

            using (var cn = new MySqlConnectionFactory(OutputConnection).GetConnection()) {
                cn.Open();
                Assert.AreEqual(1, cn.ExecuteScalar <int>("SELECT Updates FROM NorthWindControl WHERE Entity = 'Order Details' AND BatchId = 17 LIMIT 1;"));
                Assert.AreEqual(15.0M, cn.ExecuteScalar <decimal>("SELECT OrderDetailsUnitPrice FROM NorthWindStar WHERE OrderDetailsOrderId= 10253 AND OrderDetailsProductId = 39;"));
                Assert.AreEqual(40, cn.ExecuteScalar <int>("SELECT OrderDetailsQuantity FROM NorthWindStar WHERE OrderDetailsOrderId= 10253 AND OrderDetailsProductId = 39;"));
                Assert.AreEqual(15.0 * 40, cn.ExecuteScalar <int>("SELECT OrderDetailsExtendedPrice FROM NorthWindStar WHERE OrderDetailsOrderId= 10253 AND OrderDetailsProductId = 39;"));
            }

            // CHANGE 1 RECORD'S CUSTOMERID AND FREIGHT ON ORDERS TABLE
            using (var cn = new SqlServerConnectionFactory(InputConnection).GetConnection()) {
                cn.Open();
                Assert.AreEqual(1, cn.Execute("UPDATE Orders SET CustomerID = 'VICTE', Freight = 20.11 WHERE OrderId = 10254;"));
            }

            using (var outer = new ConfigurationContainer().CreateScope(TestFile + $"?Password={Password}", logger)) {
                var process = outer.Resolve <Process>();
                using (var inner = new Container(new MySqlModule(), new SqlServerModule(), new JintTransformModule()).CreateScope(process, logger)) {
                    var controller = inner.Resolve <IProcessController>();
                    controller.Execute();
                }
            }

            using (var cn = new MySqlConnectionFactory(OutputConnection).GetConnection()) {
                cn.Open();
                Assert.AreEqual(1, cn.ExecuteScalar <int>("SELECT Updates FROM NorthWindControl WHERE Entity = 'Orders' AND BatchId = 26;"));
                Assert.AreEqual("VICTE", cn.ExecuteScalar <string>("SELECT OrdersCustomerId FROM NorthWindStar WHERE OrderDetailsOrderId= 10254;"));
                Assert.AreEqual(20.11M, cn.ExecuteScalar <decimal>("SELECT OrdersFreight FROM NorthWindStar WHERE OrderDetailsOrderId= 10254;"));
            }
        }
Ejemplo n.º 27
0
 public MySqlVendorStore(MySqlConnectionFactory mySqlConnectionFactory)
 {
     _mySqlConnectionFactory = mySqlConnectionFactory;
 }