33 lines
1.2 KiB
C#
33 lines
1.2 KiB
C#
using OI.Metrology.Server.Models;
|
|
using OI.Metrology.Shared.Repositories;
|
|
using System.Data.Common;
|
|
using System.Data.SqlClient;
|
|
|
|
#pragma warning disable CS8600, CS8602, CS8603, CS8604, CS8625
|
|
|
|
namespace OI.Metrology.Server.Services;
|
|
|
|
public class SQLDbConnectionFactory : IDbConnectionFactory
|
|
{
|
|
private readonly AppSettings _AppSettings;
|
|
|
|
public SQLDbConnectionFactory(AppSettings appSettings) => _AppSettings = appSettings;
|
|
|
|
public DbConnection GetDbConnection(bool? useOI2Sql)
|
|
{
|
|
DbProviderFactories.RegisterFactory(
|
|
typeof(SqlConnection).Namespace,
|
|
SqlClientFactory.Instance);
|
|
|
|
if (string.IsNullOrEmpty(_AppSettings.ConnectionString))
|
|
throw new Exception("Connection string is missing");
|
|
|
|
if (string.IsNullOrEmpty(_AppSettings.OI2SqlConnectionString))
|
|
throw new Exception("Connection string is missing");
|
|
|
|
DbConnection dbConnection = SqlClientFactory.Instance.CreateConnection();
|
|
dbConnection.ConnectionString = useOI2Sql is not null && useOI2Sql.Value ? _AppSettings.OI2SqlConnectionString : _AppSettings.ConnectionString;
|
|
dbConnection.Open();
|
|
return dbConnection;
|
|
}
|
|
} |