Files
Umbraco-CMS/src/Umbraco.Cms.Persistence.SqlServer/UmbracoBuilderExtensions.cs
Nikolaj Geisle 747f2e7599 V11: Fix decimal variants (#13741)
* fix sqlite with variants

* Create and register SqlSpecificMapper

* Delete obsolete file

* Add back inheritance

Co-authored-by: Zeegaan <nge@umbraco.dk>
(cherry picked from commit c868c60ed2)
2023-04-18 15:22:39 +02:00

64 lines
2.9 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<IProviderSpecificMapperFactory, SqlServerSpecificMapperFactory>());
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);
NPocoSqlServerDatabaseExtensions.ConfigureNPocoBulkExtensions();
// 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;
}
}