diff --git a/src/Umbraco.Cms.Persistence.SqlServer/UmbracoBuilderExtensions.cs b/src/Umbraco.Cms.Persistence.SqlServer/UmbracoBuilderExtensions.cs index 5e4e68a0dc..4b9fb8d11a 100644 --- a/src/Umbraco.Cms.Persistence.SqlServer/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Cms.Persistence.SqlServer/UmbracoBuilderExtensions.cs @@ -2,6 +2,7 @@ using System.Data.Common; using Microsoft.Data.SqlClient; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; +using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.DependencyInjection; using Umbraco.Cms.Core.DistributedLocking; using Umbraco.Cms.Infrastructure.Persistence; @@ -37,6 +38,15 @@ public static class UmbracoBuilderExtensions DbProviderFactories.UnregisterFactory(Constants.ProviderName); DbProviderFactories.RegisterFactory(Constants.ProviderName, SqlClientFactory.Instance); + // Support provider name set by the configuration API for connection string environment variables + builder.Services.ConfigureAll(options => + { + if (options.ProviderName == "System.Data.SqlClient") + { + options.ProviderName = Constants.ProviderName; + } + }); + return builder; } } diff --git a/src/Umbraco.Cms.Persistence.Sqlite/UmbracoBuilderExtensions.cs b/src/Umbraco.Cms.Persistence.Sqlite/UmbracoBuilderExtensions.cs index ddce4788cc..8843844818 100644 --- a/src/Umbraco.Cms.Persistence.Sqlite/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Cms.Persistence.Sqlite/UmbracoBuilderExtensions.cs @@ -39,28 +39,21 @@ public static class UmbracoBuilderExtensions DbProviderFactories.UnregisterFactory(Constants.ProviderName); DbProviderFactories.RegisterFactory(Constants.ProviderName, Microsoft.Data.Sqlite.SqliteFactory.Instance); - - builder.Services.PostConfigure(Core.Constants.System.UmbracoConnectionName, opt => + // Prevent accidental creation of SQLite database files + builder.Services.PostConfigureAll(options => { - if (!opt.IsConnectionStringConfigured()) + // Skip empty connection string and other providers + if (!options.IsConnectionStringConfigured() || options.ProviderName != Constants.ProviderName) { return; } - if (opt.ProviderName != Constants.ProviderName) - { - // Not us. - return; - } - - // Prevent accidental creation of database files. - var connectionStringBuilder = new SqliteConnectionStringBuilder(opt.ConnectionString); + var connectionStringBuilder = new SqliteConnectionStringBuilder(options.ConnectionString); if (connectionStringBuilder.Mode == SqliteOpenMode.ReadWriteCreate) { connectionStringBuilder.Mode = SqliteOpenMode.ReadWrite; + options.ConnectionString = connectionStringBuilder.ConnectionString; } - - opt.ConnectionString = connectionStringBuilder.ConnectionString; }); return builder; diff --git a/src/Umbraco.Core/Configuration/ConfigureConnectionStrings.cs b/src/Umbraco.Core/Configuration/ConfigureConnectionStrings.cs index 174a65ac1e..bd982c18b9 100644 --- a/src/Umbraco.Core/Configuration/ConfigureConnectionStrings.cs +++ b/src/Umbraco.Core/Configuration/ConfigureConnectionStrings.cs @@ -18,11 +18,12 @@ public class ConfigureConnectionStrings : IConfigureNamedOptions _configuration = configuration; /// - public void Configure(ConnectionStrings options) => Configure(Constants.System.UmbracoConnectionName, options); + public void Configure(ConnectionStrings options) => Configure(Options.DefaultName, options); /// public void Configure(string name, ConnectionStrings options) { + // Default to using UmbracoConnectionName if (name == Options.DefaultName) { name = Constants.System.UmbracoConnectionName;