/// <summary> /// Constructor /// </summary> /// <param name="configuration">The configuration.</param> /// <param name="factory">The factory.</param> /// <param name="connection">The connection.</param> /// <param name="name">The name.</param> /// <param name="parameterPrefix">The parameter prefix.</param> /// <exception cref="System.ArgumentNullException">configuration</exception> public Connection(IConfiguration configuration, DbProviderFactory factory, string connection, string name, string parameterPrefix = "@") { Configuration = configuration ?? throw new System.ArgumentNullException(nameof(configuration)); Name = string.IsNullOrEmpty(name) ? "Default" : name; SourceType = factory.GetType().FullName; Factory = factory; var TempConfig = configuration.GetConnectionString(Name); if (string.IsNullOrEmpty(connection) && TempConfig != null) { ConnectionString = TempConfig; } else { ConnectionString = string.IsNullOrEmpty(connection) ? name : connection; } if (string.IsNullOrEmpty(parameterPrefix)) { if (SourceType.Contains("MySql")) { ParameterPrefix = "?"; } else if (SourceType.Contains("Oracle")) { ParameterPrefix = ":"; } else { DatabaseName = Regex.Match(ConnectionString, @"Initial Catalog=([^;]*)").Groups[1].Value; ParameterPrefix = "@"; } } else { ParameterPrefix = parameterPrefix; if (SourceType.Contains("SqlClient")) { DatabaseName = Regex.Match(ConnectionString, @"Initial Catalog=([^;]*)").Groups[1].Value; } } }
/// <summary> /// Constructor /// </summary> /// <param name="configuration">The configuration.</param> /// <param name="factory">The factory.</param> /// <param name="connection">The connection.</param> /// <param name="name">The name.</param> /// <param name="parameterPrefix">The parameter prefix.</param> /// <param name="retries">The retries.</param> /// <exception cref="System.ArgumentNullException">configuration</exception> public Connection(IConfiguration configuration, DbProviderFactory factory, string connection, string name, string parameterPrefix = "@", int retries = 0) { Retries = retries; Configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); Name = string.IsNullOrEmpty(name) ? "Default" : name; Factory = factory ?? SqlClientFactory.Instance; SourceType = Factory.GetType().FullName ?? string.Empty; var TempConfig = configuration.GetConnectionString(Name); ConnectionString = !string.IsNullOrEmpty(connection) ? connection : (TempConfig ?? Name); if (string.IsNullOrEmpty(parameterPrefix)) { if (Factory is SqlClientFactory) { DatabaseName = DatabaseNameRegex.Match(ConnectionString).Groups[1].Value; ParameterPrefix = "@"; } else if (SourceType.Contains("Oracle", StringComparison.OrdinalIgnoreCase)) { ParameterPrefix = ":"; } } else { ParameterPrefix = parameterPrefix; if (Factory is SqlClientFactory) { DatabaseName = DatabaseNameRegex.Match(ConnectionString).Groups[1].Value; } } if (ConnectionTimeoutRegex.IsMatch(ConnectionString)) { var TimeoutValue = ConnectionTimeoutRegex.Match(ConnectionString).Groups[2].Value; CommandTimeout = int.TryParse(TimeoutValue, out var TempCommandTimeout) ? TempCommandTimeout : 30; } CommandTimeout = CommandTimeout <= 0 ? 30 : CommandTimeout; }