using Microsoft.Practices.EnterpriseLibrary.Data.Sql; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Common; using Microsoft.Practices.EnterpriseLibrary.Data; using Microsoft.Practices.EnterpriseLibrary.Data.Oracle; using System.Data.SqlClient; namespace DataAccessLayer { public class SingleConnection { private SingleConnection() { } public bool IsInUse { get { return isInUse; } set { isInUse = value; } } public bool IsOracleDb { get { return oracleDatabase; } private set { oracleDatabase = value; } } public string ConnectionString { get { return connectionString; } private set { ConnectionString = value; } } public Database DataBase { get { if (connection.State != System.Data.ConnectionState.Open) { Initialize(true); } return dataBase; } private set { dataBase = value; } } public DbConnection Connection { get { if (connection.State != System.Data.ConnectionState.Open) { Initialize(true); } return connection; } set { connection = value; } } public void Release() { this.isInUse = false; } private DbConnection connection; private Database dataBase; private string connectionString; private bool isInUse = false; private bool oracleDatabase; public SingleConnection(string connectionString, bool oracleDatabase) { this.connectionString = connectionString; this.oracleDatabase = oracleDatabase; Initialize(); } private void Initialize(bool inUse = false) { if (oracleDatabase) { dataBase = new OracleDatabase(connectionString); } else { dataBase = new SqlDatabase(connectionString); } connection = dataBase.CreateConnection(); connection.Open(); isInUse = inUse; } public void Dispose() { connection.Close(); Initialize(); } } }