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)); }
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)); }
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; } }
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()); }
public SqlServerProviderConnectorFactory(SqlServerServiceInfo sinfo, SqlServerProviderConnectorOptions config, Type type) { _config = config ?? throw new ArgumentNullException(nameof(config)); _info = sinfo; ConnectorType = type; }