/// <summary> /// Adds SqlConnection (as IDbConnection) to your Autofac Container /// </summary> /// <param name="container">Your Autofac Container Builder</param> /// <param name="config">Application configuration</param> /// <param name="serviceName">Cloud Foundry service name binding</param> /// <returns>the RegistrationBuilder for (optional) additional configuration</returns> public static IRegistrationBuilder <object, SimpleActivatorData, SingleRegistrationStyle> RegisterSqlServerConnection(this ContainerBuilder container, IConfiguration config, string serviceName = null) { if (container == null) { throw new ArgumentNullException(nameof(container)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } Type sqlServerConnection = ConnectorHelpers.FindType(sqlServerAssemblies, sqlServerTypeNames); if (sqlServerConnection == null) { throw new ConnectorException("Unable to find System.Data.SqlClient.SqlConnection, are you missing a System.Data.SqlClient reference?"); } SqlServerServiceInfo info; if (serviceName == null) { info = config.GetSingletonServiceInfo <SqlServerServiceInfo>(); } else { info = config.GetRequiredServiceInfo <SqlServerServiceInfo>(serviceName); } var sqlServerConfig = new SqlServerProviderConnectorOptions(config); var factory = new SqlServerProviderConnectorFactory(info, sqlServerConfig, sqlServerConnection); return(container.Register(c => factory.Create(null)).As <IDbConnection>()); }
public static void RegisterSqlServerConnection(IContainer container, IConfigurationRoot config) { SqlServerProviderConnectorOptions SqlServerConfig = new SqlServerProviderConnectorOptions(config); SqlServerServiceInfo info = config.GetSingletonServiceInfo <SqlServerServiceInfo>(); SqlServerProviderConnectorFactory factory = new SqlServerProviderConnectorFactory(info, SqlServerConfig, typeof(SqlConnection)); container.Inject <IBloggingContext>(new BloggingContext((SqlConnection)factory.Create(null))); }
private static void CopyBoundSqlConnection( IWebConfigWriter webConfig, SqlServerServiceInfo sqlServiceInfo, SqlServerProviderConnectorOptions sqlConnectorOptions) { SqlServerProviderConnectorFactory sqlConnectorFactory = new SqlServerProviderConnectorFactory( sqlServiceInfo, sqlConnectorOptions, typeof(SqlConnection)); webConfig.SetConnectionString(sqlServiceInfo.Id, sqlConnectorFactory.CreateConnectionString()); }
private static void DoAdd(IServiceCollection services, IConfiguration config, SqlServerServiceInfo info, Type dbContextType, ServiceLifetime contextLifetime) { var sqlServerConfig = new SqlServerProviderConnectorOptions(config); var factory = new SqlServerDbContextConnectorFactory(info, sqlServerConfig, dbContextType); services.Add(new ServiceDescriptor(dbContextType, factory.Create, contextLifetime)); var healthFactory = new SqlServerProviderConnectorFactory(info, sqlServerConfig, SqlServerTypeLocator.SqlConnection); services.Add(new ServiceDescriptor(typeof(IHealthContributor), ctx => new RelationalDbHealthContributor((IDbConnection)healthFactory.Create(ctx), ctx.GetService <ILogger <RelationalDbHealthContributor> >()), contextLifetime)); }
private static string GetConnection(IConfiguration config, string serviceName = null) { var info = string.IsNullOrEmpty(serviceName) ? config.GetSingletonServiceInfo <SqlServerServiceInfo>() : config.GetRequiredServiceInfo <SqlServerServiceInfo>(serviceName); var sqlServerConfig = new SqlServerProviderConnectorOptions(config); var factory = new SqlServerProviderConnectorFactory(info, sqlServerConfig, null); return(factory.CreateConnectionString()); }
/// <summary> /// MsSql连接字符串构建 /// </summary> /// <param name="config"></param> /// <param name="serviceName"></param> /// <returns></returns> public static string BuildeSqlServerConnectionString(this IConfiguration config, string serviceName = null) { SqlServerServiceInfo info = string.IsNullOrEmpty(serviceName) ? config.GetSingletonServiceInfo <SqlServerServiceInfo>() : config.GetRequiredServiceInfo <SqlServerServiceInfo>(serviceName); SqlServerProviderConnectorOptions sqlServerConfig = new SqlServerProviderConnectorOptions(config); SqlServerProviderConnectorFactory factory = new SqlServerProviderConnectorFactory(info, sqlServerConfig, null); var dbConnectionString = factory.CreateConnectionString(); return(factory.CreateConnectionString()); }
public static void RegisterSqlServerConnection(IContainer container, IConfigurationRoot config) { SqlServerProviderConnectorOptions SqlServerConfig = new SqlServerProviderConnectorOptions(config); SqlServerServiceInfo info1 = config.GetRequiredServiceInfo <SqlServerServiceInfo>("mySqlServerService1"); // config.GetSingletonServiceInfo<SqlServerServiceInfo>(); SqlServerProviderConnectorFactory factory1 = new SqlServerProviderConnectorFactory(info1, SqlServerConfig, typeof(SqlConnection)); container.Inject <IBloggingContext>(new BloggingContext((SqlConnection)factory1.Create(null))); SqlServerServiceInfo info2 = config.GetRequiredServiceInfo <SqlServerServiceInfo>("mySqlServerService2"); // config.GetSingletonServiceInfo<SqlServerServiceInfo>(); SqlServerProviderConnectorFactory factory2 = new SqlServerProviderConnectorFactory(info2, SqlServerConfig, typeof(SqlConnection)); container.Inject <IVloggingContext>(new VloggingContext((SqlConnection)factory2.Create(null))); }
public void Create_ReturnsSqlConnection() { SqlServerProviderConnectorOptions config = new SqlServerProviderConnectorOptions() { Server = "servername", Password = "******", Username = "******", Database = "database" }; SqlServerServiceInfo si = new SqlServerServiceInfo("MyId", "jdbc:sqlserver://servername:1433;databaseName=de5aa3a747c134b3d8780f8cc80be519e", "user", "pass"); var factory = new SqlServerProviderConnectorFactory(si, config, typeof(SqlConnection)); var connection = factory.Create(null); Assert.NotNull(connection); }
public static IHealthContributor GetSqlServerContributor(IConfiguration configuration, ILogger <SkynetCloudRelationalHealthContributor> logger = null) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var info = configuration.GetSingletonServiceInfo <SqlServerServiceInfo>(); Type sqlServerConnection = SqlServerTypeLocator.SqlConnection; var sqlServerConfig = new SqlServerProviderConnectorOptions(configuration); var factory = new SqlServerProviderConnectorFactory(info, sqlServerConfig, sqlServerConnection); var connection = factory.Create(null) as IDbConnection; return(new SkynetCloudRelationalHealthContributor(connection, logger)); }
public void Sql_Is_Connected_Returns_Up_Status() { // arrange Type implementationType = SqlServerTypeLocator.SqlConnection; var sqlConfig = new SqlServerProviderConnectorOptions(); var sInfo = new SqlServerServiceInfo("MyId", "jdbc:sqlserver://localhost:1433;databaseName=master", "steeltoe", "steeltoe"); var logrFactory = new LoggerFactory(); var connFactory = new SqlServerProviderConnectorFactory(sInfo, sqlConfig, implementationType); var h = new RelationalHealthContributor((IDbConnection)connFactory.Create(null), logrFactory.CreateLogger <RelationalHealthContributor>()); // act var status = h.Health(); // assert Assert.Equal(HealthStatus.UP, status.Status); }
public void Sql_Is_Connected_Returns_Up_Status() { var implementationType = SqlServerTypeLocator.SqlConnection; var sqlConfig = new SqlServerProviderConnectorOptions() { Timeout = 1, ConnectionString = "Server=(localdb)\\MSSQLLocalDB;Integrated Security=true" }; var sInfo = new SqlServerServiceInfo("MyId", string.Empty); var logrFactory = new LoggerFactory(); var connFactory = new SqlServerProviderConnectorFactory(sInfo, sqlConfig, implementationType); var h = new RelationalDbHealthContributor((IDbConnection)connFactory.Create(null), logrFactory.CreateLogger <RelationalDbHealthContributor>()); var status = h.Health(); Assert.Equal(HealthStatus.UP, status.Status); }
public void Sql_Not_Connected_Returns_Down_Status() { var implementationType = SqlServerTypeLocator.SqlConnection; var sqlConfig = new SqlServerProviderConnectorOptions() { Timeout = 1 }; var sInfo = new SqlServerServiceInfo("MyId", "jdbc:sqlserver://localhost:1433/databaseName=invalidDatabaseName", "Dd6O1BPXUHdrmzbP", "7E1LxXnlH2hhlPVt"); var logrFactory = new LoggerFactory(); var connFactory = new SqlServerProviderConnectorFactory(sInfo, sqlConfig, implementationType); var h = new RelationalDbHealthContributor((IDbConnection)connFactory.Create(null), logrFactory.CreateLogger <RelationalDbHealthContributor>()); var status = h.Health(); Assert.Equal(HealthStatus.DOWN, status.Status); Assert.Contains(status.Details.Keys, k => k == "error"); }
private string DbConnectionString() { // The Steeltoe Microsoft SQL Server connector expects a `database` key in the service instance // credentials blob, which is not provided by our service broker, so we have to do a little bit // of extra work here to intercept the automagically discovered database connection string and // append it with our desired database name. var serviceInfo = Configuration.GetSingletonServiceInfo <SqlServerServiceInfo>(); var connectionOptions = new SqlServerProviderConnectorOptions(Configuration); var sqlProviderFactory = new SqlServerProviderConnectorFactory(serviceInfo, connectionOptions, null); var connection = sqlProviderFactory.CreateConnectionString(); if (!connection.Contains("Initial Catalog=")) { // TODO: Allow database name to be overridden from the environment? connection += "Initial Catalog=EFDemoDB;"; } return(connection); }
private static string GetConnection(IConfiguration config, string serviceName = null) { SqlServerServiceInfo info = null; if (string.IsNullOrEmpty(serviceName)) { info = config.GetSingletonServiceInfo <SqlServerServiceInfo>(); } else { info = config.GetRequiredServiceInfo <SqlServerServiceInfo>(serviceName); } SqlServerProviderConnectorOptions sqlServerConfig = new SqlServerProviderConnectorOptions(config); SqlServerProviderConnectorFactory factory = new SqlServerProviderConnectorFactory(info, sqlServerConfig, null); return(factory.CreateConnectionString()); }
/// <summary> /// Add your SqlServer-based DbContext to the ContainerBuilder /// </summary> /// <typeparam name="TContext">Your DbContext</typeparam> /// <param name="container">Autofac <see cref="ContainerBuilder" /></param> /// <param name="config">Your app config</param> /// <param name="serviceName">Name of service instance</param> /// <returns><see cref="IRegistrationBuilder{TLimit, TActivatorData, TRegistrationStyle}"/></returns> public static IRegistrationBuilder <object, SimpleActivatorData, SingleRegistrationStyle> RegisterDbContext <TContext>(this ContainerBuilder container, IConfiguration config, string serviceName = null) { if (container == null) { throw new ArgumentNullException(nameof(container)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } SqlServerServiceInfo info = serviceName == null ? config.GetSingletonServiceInfo <SqlServerServiceInfo>() : config.GetRequiredServiceInfo <SqlServerServiceInfo>(serviceName); var sqlServerConfig = new SqlServerProviderConnectorOptions(config); var factory = new SqlServerProviderConnectorFactory(info, sqlServerConfig, typeof(TContext)); return(container.Register(c => factory.Create(null)).As <TContext>()); }
/// <summary> /// Adds SqlConnection (as IDbConnection and SqlConnection) to your Autofac Container /// </summary> /// <param name="container">Your Autofac Container Builder</param> /// <param name="config">Application configuration</param> /// <param name="serviceName">Cloud Foundry service name binding</param> /// <returns>the RegistrationBuilder for (optional) additional configuration</returns> public static IRegistrationBuilder <object, SimpleActivatorData, SingleRegistrationStyle> RegisterSqlServerConnection(this ContainerBuilder container, IConfiguration config, string serviceName = null) { if (container == null) { throw new ArgumentNullException(nameof(container)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } SqlServerServiceInfo info = serviceName == null ? config.GetSingletonServiceInfo <SqlServerServiceInfo>() : config.GetRequiredServiceInfo <SqlServerServiceInfo>(serviceName); Type sqlServerConnection = SqlServerTypeLocator.SqlConnection; var sqlServerConfig = new SqlServerProviderConnectorOptions(config); var factory = new SqlServerProviderConnectorFactory(info, sqlServerConfig, sqlServerConnection); container.RegisterType <RelationalHealthContributor>().As <IHealthContributor>(); return(container.Register(c => factory.Create(null)).As(typeof(IDbConnection), sqlServerConnection)); }