/// <inheritdoc />
        public IRepositoryProvider Create(string connectionString)
        {
#if !NET472
            if (DbProviderFactories.GetProviderInvariantNames().Any(s => string.Equals(s, ProviderInvariantName, StringComparison.Ordinal)) == false)
            {
                Trace.WriteLine($"Registering {ProviderInvariantName} factory");
                DbProviderFactories.RegisterFactory(ProviderInvariantName, SqlClientFactory.Instance);
            }
#endif
            var statementCompiler = new TransactSqlAdapter(this.definitionProvider);
            var contextFactory    = new DefaultDatabaseContextFactory(connectionString, ProviderInvariantName, statementCompiler);
            return(new DatabaseRepositoryProvider(contextFactory)); // TODO: Support IMemoryCache and IDistributedCache
        }
        public async Task CreateAsync_SqlClientConnection_OpensWithoutError()
        {
#if !NET472
            if (DbProviderFactories.GetProviderInvariantNames().Any(s => string.Equals(s, SqlProviderName, StringComparison.Ordinal)) == false)
            {
                Trace.WriteLine($"Registering {SqlProviderName} factory");
                DbProviderFactories.RegisterFactory(SqlProviderName, SqlClientFactory.Instance);
            }
#endif
            var target = new DefaultDatabaseContextFactory(
                ConfigurationRoot.GetConnectionString("MasterDatabase"),
                SqlProviderName,
                new TransactSqlAdapter(new DataAnnotationsDefinitionProvider()));

            await using (var context = await target.CreateAsync(CancellationToken.None))
            {
                await context.OpenSharedConnectionAsync(CancellationToken.None);
            }
        }