示例#1
0
        /// <summary>
        /// 创建数据库查询器。
        /// </summary>
        /// <param name="useCache">优先复用链接池,否则:始终创建新链接。</param>
        /// <returns></returns>
        public virtual IDbConnection CreateDb(bool useCache = true)
        {
            var connection = TransactionConnections.GetConnection(connectionConfig.ConnectionString, DbAdapter) ?? DispatchConnections.Instance.GetConnection(connectionConfig.ConnectionString, DbAdapter, useCache);

            connections.Add(connection);

            return(connection);
        }
示例#2
0
        public void Initialize()
        {
#if NET461
            var adapter = new CodeArts.Db.SqlServerAdapter();
#else
            var adapter = new CodeArts.Db.EntityFramework.SqlServerLinqAdapter();
#endif
            LinqConnectionManager.RegisterAdapter(adapter);

            RuntimeServPools.TryAddSingleton <IMapper, CastingMapper>();

            if (isCompleted)
            {
                return;
            }

            var connectionString = string.Format(@"Server={0};Database={1};User ID={2};Password={3}",
                                                 SqlServerConsts.Domain,
                                                 SqlServerConsts.Database,
                                                 SqlServerConsts.User,
                                                 SqlServerConsts.Password);

            using (var connection = TransactionConnections.GetConnection(connectionString, adapter) ?? DispatchConnections.Instance.GetConnection(connectionString, adapter))
            {
                try
                {
                    connection.Open();
                    using (var command = connection.CreateCommand())
                    {
                        command.CommandType = System.Data.CommandType.Text;

                        var files = Directory.GetFiles("../../../Sql", "*.sql");

                        foreach (var file in files.Where(x => x.Contains("mssql")))
                        {
                            string text = File.ReadAllText(file, Encoding.UTF8);

                            command.CommandText = text;

                            command.ExecuteNonQuery();
                        }
                    }

                    isCompleted = true;
                }
                finally
                {
                    connection.Close();
                }
            }
        }
示例#3
0
        public void Initialize()
        {
            var adapter = new MySqlLtsAdapter();

            adapter.Visitors.Add(new ConvertVisitter());

            DbConnectionManager.RegisterAdapter(adapter);
            DbConnectionManager.RegisterDatabaseFor <DapperFor>();

            if (isCompleted)
            {
                return;
            }

            var connectionString = string.Format("server={0};port=3306;user=root;password={1};database=mysql;"
                                                 , MySqlConsts.Domain
                                                 , MySqlConsts.Password);

            using (var connection = TransactionConnections.GetConnection(connectionString, adapter) ?? DispatchConnections.Instance.GetConnection(connectionString, adapter))
            {
                try
                {
                    connection.Open();

                    using (var command = connection.CreateCommand())
                    {
                        command.CommandType = System.Data.CommandType.Text;

                        var files = Directory.GetFiles("../../../Sql", "*.sql");

                        foreach (var file in files.Where(x => x.Contains("mysql")))
                        {
                            string text = File.ReadAllText(file, Encoding.UTF8);

                            command.CommandText = text;

                            command.ExecuteNonQuery();
                        }
                    }

                    isCompleted = true;
                }
                finally
                {
                    connection.Close();
                }
            }
        }
示例#4
0
            public Task <int> ExecuteAsync(CommandSql commandSql, CancellationToken cancellationToken = default)
            {
                if (connection is null)
                {
                    using (var dbConnection = TransactionConnections.GetConnection(connectionConfig.ConnectionString, adapter) ?? DispatchConnections.Instance.GetConnection(connectionConfig.ConnectionString, adapter, true))
                    {
                        return(databaseFor.ExecuteAsync(dbConnection, commandSql, cancellationToken));
                    }
                }

                if (transactions.Count == 0)
                {
                    return(databaseFor.ExecuteAsync(connection, commandSql, cancellationToken));
                }

                return(databaseFor.ExecuteAsync(this, commandSql, cancellationToken));
            }
示例#5
0
            public IAsyncEnumerable <T> QueryAsync <T>(CommandSql commandSql)
            {
                if (connection is null)
                {
                    using (var dbConnection = TransactionConnections.GetConnection(connectionConfig.ConnectionString, adapter) ?? DispatchConnections.Instance.GetConnection(connectionConfig.ConnectionString, adapter, true))
                    {
                        return(databaseFor.QueryAsync <T>(dbConnection, commandSql));
                    }
                }

                if (transactions.Count == 0)
                {
                    return(databaseFor.QueryAsync <T>(connection, commandSql));
                }

                return(databaseFor.QueryAsync <T>(this, commandSql));
            }
示例#6
0
            public int Execute(CommandSql commandSql)
            {
                if (connection is null)
                {
                    using (var dbConnection = TransactionConnections.GetConnection(connectionConfig.ConnectionString, adapter) ?? DispatchConnections.Instance.GetConnection(connectionConfig.ConnectionString, adapter, true))
                    {
                        return(databaseFor.Execute(dbConnection, commandSql));
                    }
                }

                if (transactions.Count == 0)
                {
                    return(databaseFor.Execute(connection, commandSql));
                }

                return(databaseFor.Execute(this, commandSql));
            }