/// <summary>
 ///     上下文初始化器(只赋值,不初始化,有可能被重复创建两次)
 /// </summary>
 /// <param name="connectionString">连接字符串</param>
 /// <param name="dbType">数据库类型</param>
 /// <param name="commandTimeout">命令超时时间</param>
 /// <param name="dataVer">数据库版本</param>
 public ContextConnection(string connectionString, eumDbType dbType, int commandTimeout, string dataVer)
 {
     this.ConnectionString = connectionString;
     this.DbType           = dbType;
     this.CommandTimeout   = commandTimeout;
     this.DataVer          = dataVer;
 }
 /// <summary>
 ///     上下文初始化器(只赋值,不初始化,有可能被重复创建两次)
 /// </summary>
 /// <param name="connectionString">连接字符串</param>
 /// <param name="dbType">数据库类型</param>
 /// <param name="commandTimeout">命令超时时间</param>
 /// <param name="dataVer">数据库版本</param>
 public ContextConnection(string connectionString, eumDbType dbType, int commandTimeout, string dataVer)
 {
     this.ConnectionString = connectionString;
     this.DbType = dbType;
     this.CommandTimeout = commandTimeout;
     this.DataVer = dataVer;
 }
Beispiel #3
0
 /// <summary>
 ///     构造函数
 /// </summary>
 /// <param name="connectionString">数据库连接字符串</param>
 /// <param name="dbType">数据库类型</param>
 /// <param name="commandTimeout">数据库执行时间,单位秒</param>
 /// <param name="tranLevel">
 ///     未提交读(read uncommitted): 当事务A更新某条数据时,不容许其他事务来更新该数据,但可以读取。
 ///     提交读(read committed):    当事务A更新某条数据时,不容许其他事务进行任何操作包括读取,但事务A读取时,其他事务可以进行读取、更新。
 ///     重复读(repeatable read): 当事务A更新数据时,不容许其他事务进行任何操作,但当事务A进行读取时,其他事务只能读取,不能更新。
 ///     序列化(serializable):     最严格的隔离级别,事务必须依次进行。
 /// </param>
 public DbExecutor(string connectionString, eumDbType dbType = eumDbType.SqlServer, int commandTimeout = 30, IsolationLevel tranLevel = IsolationLevel.Unspecified)
 {
     _connectionString = connectionString;
     _commandTimeout   = commandTimeout;
     DataType          = dbType;
     OpenTran(tranLevel);
 }
Beispiel #4
0
        /// <summary>
        ///     通过自定义数据链接符,连接数据库
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="db">数据库类型</param>
        /// <param name="commandTimeout">SQL执行超时时间</param>
        /// <param name="dataVer">数据库版本(针对不同的数据库版本的优化)</param>
        protected DbContext(string connectionString, eumDbType db = eumDbType.SqlServer, int commandTimeout = 30, string dataVer = null)
        {
            _contextConnection = new ContextConnection(connectionString, db, commandTimeout, dataVer);

            // 实例化子类中,所有Set属性
            ContextSetTypeCacheManger.Cache(this.GetType()).Item2(this);
        }
        /// <summary>
        ///     构造函数
        /// </summary>
        /// <param name="dbType">数据库类型</param>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandTimeout">数据库执行时间,单位秒</param>
        /// <param name="tranLevel">开启事务等级</param>
        public DbExecutor(string connectionString, eumDbType dbType = eumDbType.SqlServer, int commandTimeout = 30, IsolationLevel tranLevel = IsolationLevel.Unspecified)
        {
            _connectionString = connectionString;
            _commandTimeout = commandTimeout;
            DataType = dbType;

            OpenTran(tranLevel);
        }
        /// <summary>
        ///     压缩数据库
        /// </summary>
        /// <param name="dataType">数据库类型</param>
        /// <param name="connetionString">连接字符串</param>
        public static void Compression(string connetionString, eumDbType dataType = eumDbType.SqlServer)
        {
            var db = new DbExecutor(connetionString, dataType, 30);
            switch (dataType)
            {
                case eumDbType.SQLite:
                    db.ExecuteNonQuery(CommandType.Text, "VACUUM", null);
                    break;

                default:
                    throw new NotImplementedException("该数据库不支持该方法!");
            }
        }
Beispiel #7
0
        /// <summary>
        ///     压缩数据库
        /// </summary>
        /// <param name="dataType">数据库类型</param>
        /// <param name="connetionString">连接字符串</param>
        public static void Compression(string connetionString, eumDbType dataType = eumDbType.SqlServer)
        {
            var db = new DbExecutor(connetionString, dataType, 30);

            switch (dataType)
            {
            case eumDbType.SQLite:
                db.ExecuteNonQuery(CommandType.Text, "VACUUM", null);
                break;

            default:
                throw new NotImplementedException("该数据库不支持该方法!");
            }
        }
Beispiel #8
0
        /// <summary>
        ///     返回数据库类型名称
        /// </summary>
        /// <param name="dbType">数据库类型</param>
        /// <param name="dataVer">数据库版本</param>
        public static AbsDbProvider CreateInstance(eumDbType dbType, string dataVer = null)
        {
            switch (dbType)
            {
#if !CORE
                case eumDbType.OleDb: return new OleDbProvider();
                case eumDbType.Oracle: return new OracleProvider();
#endif
                case eumDbType.MySql: return new MySqlProvider();
                case eumDbType.SQLite: return new SqLiteProvider();
                case eumDbType.PostgreSql: return new PostgreSqlProvider();
            }
            return new SqlServerProvider();
        }
 /// <summary>
 ///     获取数据库连接对象
 /// </summary>
 /// <param name="dbType">数据库类型</param>
 /// <param name="connectionString">连接字符串</param>
 public static DbConnection GetDbConnection(eumDbType dbType, string connectionString)
 {
     DbConnection conn;
     switch (dbType)
     {
         case eumDbType.SqlServer:
             conn = new SqlConnection(connectionString);
             break;
         default:
             conn = AbsDbProvider.CreateInstance(dbType).DbProviderFactory.CreateConnection();
             break;
     }
     conn.ConnectionString = connectionString;
     return conn;
 }
Beispiel #10
0
        /// <summary>
        ///     获取数据库连接对象
        /// </summary>
        /// <param name="dbType">数据库类型</param>
        /// <param name="connectionString">连接字符串</param>
        public static DbConnection GetDbConnection(eumDbType dbType, string connectionString)
        {
            DbConnection conn;

            switch (dbType)
            {
            case eumDbType.SqlServer:
                conn = new SqlConnection(connectionString);
                break;

            default:
                conn = AbsDbProvider.CreateInstance(dbType).DbProviderFactory.CreateConnection();
                break;
            }
            conn.ConnectionString = connectionString;
            return(conn);
        }
 /// <summary>
 ///     返回数据库类型名称
 /// </summary>
 /// <param name="dbType">数据库类型</param>
 public static DbProviderFactory CreateDbProviderFactory(eumDbType dbType)
 {
     switch (dbType)
     {
         case eumDbType.MySql:
             return DbProviderFactories.GetFactory("MySql.Data.MySqlClient");
         case eumDbType.OleDb:
             return DbProviderFactories.GetFactory("System.Data.OleDb");
         case eumDbType.Oracle:
             return DbProviderFactories.GetFactory("System.Data.OracleClient");
         case eumDbType.SQLite:
             return DbProviderFactories.GetFactory("System.Data.SQLite");
         case eumDbType.SqlServer:
             return DbProviderFactories.GetFactory("System.Data.SqlClient");
     }
     return DbProviderFactories.GetFactory("System.Data.SqlClient");
 }
Beispiel #12
0
        /// <summary>
        ///     返回数据库类型名称
        /// </summary>
        /// <param name="dbType">数据库类型</param>
        /// <param name="dataVer">数据库版本</param>
        public static AbsDbProvider CreateInstance(eumDbType dbType, string dataVer = null)
        {
            switch (dbType)
            {
            case eumDbType.OleDb: return(new OleDbProvider());

            case eumDbType.MySql: return(new MySqlProvider());

            case eumDbType.SQLite: return(new SqLiteProvider());

            case eumDbType.Oracle: return(new OracleProvider());

            case eumDbType.PostgreSql: return(new PostgreSqlProvider());
            }
            switch (dataVer)
            {
            case "2000": return(new SqlServer2000Provider());
            }
            return(new SqlServerProvider());
        }
Beispiel #13
0
 /// <summary>
 ///     通过自定义数据链接符,连接数据库
 /// </summary>
 /// <param name="connectionString">数据库连接字符串</param>
 /// <param name="db">数据库类型</param>
 /// <param name="commandTimeout">SQL执行超时时间</param>
 protected DbContext(string connectionString, eumDbType db = eumDbType.SqlServer, int commandTimeout = 30) : base(connectionString, db, commandTimeout)
 {
 }
Beispiel #14
0
 /// <summary>
 ///     通过自定义数据链接符,连接数据库
 /// </summary>
 /// <param name="connectionString">数据库连接字符串</param>
 /// <param name="db">数据库类型</param>
 /// <param name="commandTimeout">SQL执行超时时间</param>
 /// <param name="dataVer">数据库版本(针对不同的数据库版本的优化)</param>
 /// <param name="isUnitOfWork">是否工作单元模式</param>
 public DbContext(string connectionString, eumDbType db, int commandTimeout = 30, string dataVer = null, bool isUnitOfWork = false) : this(isUnitOfWork)
 {
     _internalContext.ContextConnection = new ContextConnection(connectionString, db, commandTimeout, dataVer);
 }