private static void DoAdd(IServiceCollection services, SqlServerServiceInfo info, IConfiguration config, ServiceLifetime contextLifetime)
        {
            var sqlServerConfig = new SqlServerProviderConnectorOptions(config);
            var factory         = new SqlServerProviderConnectorFactory(info, sqlServerConfig, SqlServerTypeLocator.SqlConnection);

            services.Add(new ServiceDescriptor(typeof(IHealthContributor), ctx => new RelationalHealthContributor((IDbConnection)factory.Create(ctx), ctx.GetService <ILogger <RelationalHealthContributor> >()), contextLifetime));
        }
Пример #2
0
        public void UpdateConfiguration(SqlServerServiceInfo si, SqlServerProviderConnectorOptions configuration)
        {
            if (si == null)
            {
                return;
            }

            if (!string.IsNullOrEmpty(si.Uri))
            {
                configuration.Port   = si.Port;
                configuration.Server = si.Host;
                if (!string.IsNullOrEmpty(si.Path))
                {
                    configuration.Database = si.Path;
                }

                if (si.Query != null)
                {
                    foreach (var piece in si.Query.Split('&'))
                    {
                        var kvp = piece.Split('=');
                        if (kvp[0].EndsWith("database", StringComparison.InvariantCultureIgnoreCase) || kvp[0].EndsWith("databaseName", StringComparison.InvariantCultureIgnoreCase))
                        {
                            configuration.Database = kvp[1];
                        }
                        else if (kvp[0].EndsWith("instancename", StringComparison.InvariantCultureIgnoreCase))
                        {
                            configuration.InstanceName = kvp[1];
                        }
                        else if (kvp[0].StartsWith("hostnameincertificate", StringComparison.InvariantCultureIgnoreCase))
                        {
                            // adding this key could result in "System.ArgumentException : Keyword not supported: 'hostnameincertificate'" later
                        }
                        else
                        {
                            configuration.Options.Add(kvp[0], kvp[1]);
                        }
                    }
                }

                if (configuration.UrlEncodedCredentials)
                {
                    configuration.Username = WebUtility.UrlDecode(si.UserName);
                    configuration.Password = WebUtility.UrlDecode(si.Password);
                }
                else
                {
                    configuration.Username = si.UserName;
                    configuration.Password = si.Password;
                }
            }
        }
        private static void DoAdd(IServiceCollection services, SqlServerServiceInfo info, IConfiguration config, ServiceLifetime contextLifetime, bool addSteeltoeHealthChecks)
        {
            Type sqlServerConnection = SqlServerTypeLocator.SqlConnection;
            var  sqlServerConfig     = new SqlServerProviderConnectorOptions(config);
            var  factory             = new SqlServerProviderConnectorFactory(info, sqlServerConfig, sqlServerConnection);

            services.Add(new ServiceDescriptor(typeof(IDbConnection), factory.Create, contextLifetime));
            services.Add(new ServiceDescriptor(sqlServerConnection, factory.Create, contextLifetime));
            if (!services.Any(s => s.ServiceType == typeof(HealthCheckService)) || addSteeltoeHealthChecks)
            {
                services.Add(new ServiceDescriptor(typeof(IHealthContributor), ctx => new RelationalHealthContributor((IDbConnection)factory.Create(ctx), ctx.GetService <ILogger <RelationalHealthContributor> >()), ServiceLifetime.Singleton));
            }
        }
        public Connection Get(IConfiguration configuration, string serviceName)
        {
            var info = serviceName == null
            ? configuration.GetSingletonServiceInfo <SqlServerServiceInfo>()
            : configuration.GetRequiredServiceInfo <SqlServerServiceInfo>(serviceName);

            var sqlConfig  = new SqlServerProviderConnectorOptions(configuration);
            var configurer = new SqlServerProviderConfigurer();

            return(new Connection
            {
                ConnectionString = configurer.Configure(info, sqlConfig),
                Name = "SqlServer" + serviceName?.Insert(0, "-")
            });
        }
        private static void DoAdd(IServiceCollection services, SqlServerServiceInfo info, IConfiguration config, ServiceLifetime contextLifetime)
        {
            Type sqlServerConnection = ConnectorHelpers.FindType(sqlServerAssemblies, sqlServerTypeNames);

            if (sqlServerConnection == null)
            {
                throw new ConnectorException("Unable to find System.Data.SqlClient.SqlConnection, are you missing a reference to System.Data.SqlClient?");
            }

            SqlServerProviderConnectorOptions sqlServerConfig = new SqlServerProviderConnectorOptions(config);
            SqlServerProviderConnectorFactory factory         = new SqlServerProviderConnectorFactory(info, sqlServerConfig, sqlServerConnection);

            services.Add(new ServiceDescriptor(typeof(IDbConnection), factory.Create, contextLifetime));
            services.Add(new ServiceDescriptor(sqlServerConnection, factory.Create, contextLifetime));
        }
Пример #6
0
        public void UpdateConfiguration(SqlServerServiceInfo si, SqlServerProviderConnectorOptions configuration)
        {
            if (si == null)
            {
                return;
            }

            if (!string.IsNullOrEmpty(si.Uri))
            {
                configuration.Port     = si.Port;
                configuration.Server   = si.Host;
                configuration.Database = si.Path.Replace("databaseName=", string.Empty);
                configuration.Username = si.UserName;
                configuration.Password = si.Password;
            }
        }
Пример #7
0
        private static void DoAdd(IServiceCollection services, SqlServerServiceInfo info, IConfiguration config, ServiceLifetime contextLifetime, IHealthChecksBuilder healthChecksBuilder)
        {
            Type sqlServerConnection = SqlServerTypeLocator.SqlConnection;
            var  sqlServerConfig     = new SqlServerProviderConnectorOptions(config);
            var  factory             = new SqlServerProviderConnectorFactory(info, sqlServerConfig, sqlServerConnection);

            services.Add(new ServiceDescriptor(typeof(IDbConnection), factory.Create, contextLifetime));
            services.Add(new ServiceDescriptor(sqlServerConnection, factory.Create, contextLifetime));
            if (healthChecksBuilder == null)
            {
                services.Add(new ServiceDescriptor(typeof(IHealthContributor), ctx => new RelationalHealthContributor((IDbConnection)factory.Create(ctx), ctx.GetService <ILogger <RelationalHealthContributor> >()), ServiceLifetime.Singleton));
            }
            else
            {
                healthChecksBuilder.AddSqlServer(factory.CreateConnectionString());
            }
        }
        public void UpdateConfiguration(SqlServerServiceInfo si, SqlServerProviderConnectorOptions configuration)
        {
            if (si == null)
            {
                return;
            }

            if (!string.IsNullOrEmpty(si.Uri))
            {
                configuration.Port     = si.Port;
                configuration.Server   = si.Host;
                configuration.Database = si.Path.Replace("databaseName=", string.Empty);
                if (configuration.UrlEncodedCredentials)
                {
                    configuration.Username = WebUtility.UrlDecode(si.UserName);
                    configuration.Password = WebUtility.UrlDecode(si.Password);
                }
                else
                {
                    configuration.Username = si.UserName;
                    configuration.Password = si.Password;
                }
            }
        }
 public string Configure(SqlServerServiceInfo si, SqlServerProviderConnectorOptions configuration)
 {
     UpdateConfiguration(si, configuration);
     return(configuration.ToString());
 }
Пример #10
0
 public SqlServerProviderConnectorFactory(SqlServerServiceInfo sinfo, SqlServerProviderConnectorOptions config, Type type)
 {
     _config       = config ?? throw new ArgumentNullException(nameof(config));
     _info         = sinfo;
     ConnectorType = type;
 }