/// <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());
        }
Example #7
0
        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));
        }
Example #10
0
        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");
        }
Example #13
0
        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);
        }
Example #14
0
        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));
        }