Esempio n. 1
0
 /// <summary>
 /// 实例化一个数据库操作类
 /// </summary>
 /// <param name="connectionType">连接类型</param>
 /// <param name="connectionString">连接字符串</param>
 /// <returns>返回数据库操作类的实例</returns>
 public static DBManager Instance(DBConnectionType connectionType, string conStr)
 {
     if (connectionType == DBConnectionType.SqlServer)
     {
         return(new SqlDBProvider(conStr));
     }
     else
     {
         return(new OleDBProvider(conStr));
     }
 }
Esempio n. 2
0
        public static string GetConnectionString(DBConnectionType con)
        {
            switch (con)
            {
            case DBConnectionType.SAES:
                return(ConnectorOne);

            case DBConnectionType.PORTAFOLIO:
                return(ConnectorTwo);

            case DBConnectionType.BEMPLEO:
                return(ConnectorThree);
            }
            return(null);
        }
Esempio n. 3
0
        public MSSql(DBConnectionType type, EnvironmentModel EnvironmentModel)
        {
            switch (type)
            {
            case DBConnectionType.RBAC:
                oConnStr = EnvironmentModel.DBRBAC.ConnectionString;
                break;

            case DBConnectionType.Business:
                oConnStr = EnvironmentModel.DBBusiness.ConnectionString;
                break;

            default:
                break;
            }
        }
Esempio n. 4
0
        public static DBMapper GiveDatabaseType(DBConnectionType type)
        {
            switch (type)
            {
            case DBConnectionType.BEMPLEO:
            case DBConnectionType.PORTAFOLIO:
                return(new DBMapper {
                    ConnectionString = DBConnection.GetConnectionString(type), Provider = DbNetLink.Data.DataProvider.SqlClient
                });

            case DBConnectionType.SAES:
                return(new DBMapper {
                    ConnectionString = DBConnection.GetConnectionString(type), Provider = DbNetLink.Data.DataProvider.Odbc
                });
            }
            return(null);
        }
Esempio n. 5
0
        /// <summary>
        /// Deve retornar uma conexão aberta de base de dados
        /// </summary>
        /// <param name="callID">ID da chamada atual (para identiicação se é o mesmo método na entrada e saida)</param>
        /// <param name="connectionStringName">Nome da configuração de ConnectionString</param>
        /// <param name="connectionType">Tipo de conexão</param>
        /// <returns></returns>
        public System.Data.IDbConnection GetOpenedConnection(Guid callID, string connectionStringName, DBConnectionType connectionType)
        {
            //Pega configuração de connection String
            var connectionStringSetting = ConfigurationManager.ConnectionStrings[connectionStringName];

            if (connectionStringSetting == null)
            {
                if (ConfigurationManager.ConnectionStrings.Count == 0)
                {
                    throw new ArgumentException("Invalid ConnectionString", "ConnectionString");
                }

                connectionStringSetting = ConfigurationManager.ConnectionStrings[0];
            }


            //Fecha conexão apenas se não tiver transações abertas nessa thread
            DbTransaction transaction;
            int           threadID = System.Threading.Thread.CurrentThread.ManagedThreadId;

            if (Transactions.TryGetValue(threadID, out transaction))
            {
                if (transaction == null)
                {
                    //caso a transação seja nula abre uma conexão e inicia a transação
                    var connection = OpenConnection(connectionStringSetting);
                    transaction = connection.BeginTransaction();
                    //caso não consiga atualizar a transação acusa erro
                    if (!Transactions.TryUpdate(threadID, transaction, null))
                    {
                        throw new Exception("Failed to update transaction");
                    }

                    return(connection);
                }
                else
                {
                    //caso a chamada esteja em transação mas for chamado um método com uma connection string diferente
                    //acusa erro
                    if (transaction.Connection.ConnectionString != connectionStringSetting.ConnectionString)
                    {
                        throw new InvalidOperationException("When transaction calls all the procedures must have the same connection string");
                    }
                    //caso possua a mesma conection string retorna a conexão da transação
                    return(transaction.Connection);
                }
            }
            else
            {
                //retorna uma nova conexão
                return(OpenConnection(connectionStringSetting));
            }
        }