Esempio n. 1
0
        /// <summary>
        /// 获取数据库连接,返回的连接已经打开(open);在 mvc 框架中不用关闭,框架会自动关闭连接。
        /// 之所以要传入 EntityInfo,因为 ORM 支持多个数据库,不同的类型有可能映射到不同的数据库。
        /// </summary>
        /// <param name="et"></param>
        /// <returns></returns>
        public static IDbConnection getConnection(EntityInfo et)
        {
            String db = et.Database;
            String connectionString = DbConfig.GetConnectionString(db);

            IDbConnection connection;

            getConnectionAll().TryGetValue(db, out connection);

            if (connection == null)
            {
                connection = DataFactory.GetConnection(connectionString, et.DbType);

                connection.Open();
                setConnection(db, connection);

                if (shouldTransaction())
                {
                    IDbTransaction trans = connection.BeginTransaction();
                    setTransaction(db, trans);
                }

                return(connection);
            }
            if (connection.State == ConnectionState.Closed)
            {
                connection.ConnectionString = connectionString;
                connection.Open();
            }
            return(connection);
        }