Exemplo n.º 1
0
        public DbConnectionPool(DataType dataType, Func <DbConnection> connectionFactory)
        {
            #region Test connectionFactory
            //情况1:() => new SqlConnection(...)
            //情况2:() => conn
            DbConnection conn1 = null;
            DbConnection conn2 = null;
            try
            {
                conn1 = connectionFactory(); //测试 conn
                conn2 = connectionFactory();

                TestConnection        = conn1; //赋值创建 Command,兼容 Mono.Data.Sqlite
                IsSingletonConnection = conn1 == conn2;
            }
            catch { }
            finally
            {
                if (conn1 != conn2)
                {
                    if (conn1?.State == ConnectionState.Open)
                    {
                        try { conn1?.Close(); } catch { }
                    }
                    if (conn2?.State == ConnectionState.Open)
                    {
                        try { conn2?.Close(); } catch { }
                    }
                }
            }
            #endregion

            _dataType          = dataType;
            _connectionFactory = connectionFactory;
            Policy             = new DbConnectionPoolPolicy(this);
        }
Exemplo n.º 2
0
 public DbConnectionPool(DataType dataType, Func <DbConnection> connectionFactory)
 {
     _dataType          = dataType;
     _connectionFactory = connectionFactory;
     Policy             = new DbConnectionPoolPolicy(this);
 }