/// <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)); } }
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); }
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; } }
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); }
/// <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)); } }