Exemple #1
0
        /// <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;
        }