Files
Umbraco-CMS/src/Umbraco.Cms.Persistence.SqlServer/UmbracoBuilderExtensions.cs
Nikolaj Geisle df5993bca8 V10: Fix build warnings umbraco.persistence (#12502)
* Run code cleanup

* Run dotnet format

* Manual cleanup

* Fix [..] to substring

* Fix after merge

* Update src/Umbraco.Cms.Persistence.SqlServer/Services/SqlServerBulkSqlInsertProvider.cs

Co-authored-by: Paul Johnson <pmj@umbraco.com>

Co-authored-by: Nikolaj Geisle <niko737@edu.ucl.dk>
Co-authored-by: Zeegaan <nge@umbraco.dk>
Co-authored-by: Paul Johnson <pmj@umbraco.com>
2022-06-20 08:07:08 +02:00

60 lines
2.7 KiB
C#

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;
using Umbraco.Cms.Infrastructure.Persistence.SqlSyntax;
using Umbraco.Cms.Persistence.SqlServer.Interceptors;
using Umbraco.Cms.Persistence.SqlServer.Services;
namespace Umbraco.Cms.Persistence.SqlServer;
/// <summary>
/// SQLite support extensions for IUmbracoBuilder.
/// </summary>
public static class UmbracoBuilderExtensions
{
/// <summary>
/// Add required services for SQL Server support.
/// </summary>
public static IUmbracoBuilder AddUmbracoSqlServerSupport(this IUmbracoBuilder builder)
{
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<ISqlSyntaxProvider, SqlServerSyntaxProvider>());
builder.Services.TryAddEnumerable(ServiceDescriptor
.Singleton<IBulkSqlInsertProvider, SqlServerBulkSqlInsertProvider>());
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<IDatabaseCreator, SqlServerDatabaseCreator>());
builder.Services.TryAddEnumerable(ServiceDescriptor
.Singleton<IDatabaseProviderMetadata, SqlLocalDbDatabaseProviderMetadata>());
builder.Services.TryAddEnumerable(ServiceDescriptor
.Singleton<IDatabaseProviderMetadata, SqlServerDatabaseProviderMetadata>());
builder.Services.TryAddEnumerable(ServiceDescriptor
.Singleton<IDatabaseProviderMetadata, SqlAzureDatabaseProviderMetadata>());
builder.Services.TryAddEnumerable(ServiceDescriptor
.Singleton<IDistributedLockingMechanism, SqlServerDistributedLockingMechanism>());
builder.Services.TryAddEnumerable(ServiceDescriptor
.Singleton<IProviderSpecificInterceptor, SqlServerAddMiniProfilerInterceptor>());
builder.Services.TryAddEnumerable(ServiceDescriptor
.Singleton<IProviderSpecificInterceptor, SqlServerAddRetryPolicyInterceptor>());
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<ConnectionStrings>(options =>
{
if (options.ProviderName == "System.Data.SqlClient")
{
options.ProviderName = Constants.ProviderName;
}
});
return builder;
}
}