TP_SEI_Project/root/Shared/DataAccessLayer/SingleSqlConnection.cs
2025-04-15 12:10:19 +02:00

92 lines
2.5 KiB
C#

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