From c868c60ed24b576ff656713cde6e3524b6b7ec6f Mon Sep 17 00:00:00 2001 From: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com> Date: Thu, 26 Jan 2023 12:26:06 +0100 Subject: [PATCH 1/2] V11: Fix decimal variants (#13741) * fix sqlite with variants * Create and register SqlSpecificMapper * Delete obsolete file * Add back inheritance Co-authored-by: Zeegaan --- .../SqlServerSpecificMapperFactory.cs | 11 +++++++ .../UmbracoBuilderExtensions.cs | 2 ++ .../Mappers/SqlitePocoGuidMapper.cs | 19 ++++++++++++ .../Mapping/UmbracoDefaultMapper.cs | 30 +++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 src/Umbraco.Cms.Persistence.SqlServer/Services/SqlServerSpecificMapperFactory.cs create mode 100644 src/Umbraco.Infrastructure/Mapping/UmbracoDefaultMapper.cs diff --git a/src/Umbraco.Cms.Persistence.SqlServer/Services/SqlServerSpecificMapperFactory.cs b/src/Umbraco.Cms.Persistence.SqlServer/Services/SqlServerSpecificMapperFactory.cs new file mode 100644 index 0000000000..1943aa251a --- /dev/null +++ b/src/Umbraco.Cms.Persistence.SqlServer/Services/SqlServerSpecificMapperFactory.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Mapping; +using Umbraco.Cms.Infrastructure.Persistence; + +namespace Umbraco.Cms.Persistence.SqlServer.Services; + +public class SqlServerSpecificMapperFactory : IProviderSpecificMapperFactory +{ + public string ProviderName => Constants.ProviderName; + + public NPocoMapperCollection Mappers => new(() => new[] { new UmbracoDefaultMapper() }); +} diff --git a/src/Umbraco.Cms.Persistence.SqlServer/UmbracoBuilderExtensions.cs b/src/Umbraco.Cms.Persistence.SqlServer/UmbracoBuilderExtensions.cs index aa4743faf8..abe893180a 100644 --- a/src/Umbraco.Cms.Persistence.SqlServer/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Cms.Persistence.SqlServer/UmbracoBuilderExtensions.cs @@ -22,6 +22,8 @@ public static class UmbracoBuilderExtensions /// public static IUmbracoBuilder AddUmbracoSqlServerSupport(this IUmbracoBuilder builder) { + builder.Services.TryAddEnumerable(ServiceDescriptor + .Singleton()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton()); diff --git a/src/Umbraco.Cms.Persistence.Sqlite/Mappers/SqlitePocoGuidMapper.cs b/src/Umbraco.Cms.Persistence.Sqlite/Mappers/SqlitePocoGuidMapper.cs index 930478e453..ab62b4b1d1 100644 --- a/src/Umbraco.Cms.Persistence.Sqlite/Mappers/SqlitePocoGuidMapper.cs +++ b/src/Umbraco.Cms.Persistence.Sqlite/Mappers/SqlitePocoGuidMapper.cs @@ -1,3 +1,4 @@ +using System.Globalization; using NPoco; namespace Umbraco.Cms.Persistence.Sqlite.Mappers; @@ -28,6 +29,24 @@ public class SqlitePocoGuidMapper : DefaultMapper }; } + if (destType == typeof(decimal)) + { + return value => + { + var result = Convert.ToDecimal(value, CultureInfo.InvariantCulture); + return result; + }; + } + + if (destType == typeof(decimal?)) + { + return value => + { + var result = Convert.ToDecimal(value, CultureInfo.InvariantCulture); + return result; + }; + } + return base.GetFromDbConverter(destType, sourceType); } } diff --git a/src/Umbraco.Infrastructure/Mapping/UmbracoDefaultMapper.cs b/src/Umbraco.Infrastructure/Mapping/UmbracoDefaultMapper.cs new file mode 100644 index 0000000000..986bb19d39 --- /dev/null +++ b/src/Umbraco.Infrastructure/Mapping/UmbracoDefaultMapper.cs @@ -0,0 +1,30 @@ +using System.Globalization; +using NPoco; + +namespace Umbraco.Cms.Core.Mapping; + +public class UmbracoDefaultMapper : DefaultMapper +{ + public override Func GetFromDbConverter(Type destType, Type sourceType) + { + if (destType == typeof(decimal)) + { + return value => + { + var result = Convert.ToDecimal(value, CultureInfo.InvariantCulture); + return result; + }; + } + + if (destType == typeof(decimal?)) + { + return value => + { + var result = Convert.ToDecimal(value, CultureInfo.InvariantCulture); + return result; + }; + } + + return base.GetFromDbConverter(destType, sourceType); + } +} From f275d80e2f7e9107a0a650f7a419c9d8d9f42cec Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Thu, 26 Jan 2023 16:20:57 +0100 Subject: [PATCH 2/2] Fixes issue with nucache slow on linux, when cold-booting (#13719) * Fixes issue with nucache slow on linux, when cold-booting https://github.com/umbraco/Umbraco-CMS/issues/12159 --- src/Umbraco.PublishedCache.NuCache/DataSource/BTree.cs | 4 ---- .../Umbraco.PublishedCache.NuCache.csproj | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Umbraco.PublishedCache.NuCache/DataSource/BTree.cs b/src/Umbraco.PublishedCache.NuCache/DataSource/BTree.cs index 03859a97e7..14976717be 100644 --- a/src/Umbraco.PublishedCache.NuCache/DataSource/BTree.cs +++ b/src/Umbraco.PublishedCache.NuCache/DataSource/BTree.cs @@ -22,10 +22,6 @@ public class BTree // default is 4096, min 2^9 = 512, max 2^16 = 64K FileBlockSize = GetBlockSize(settings), - // HACK: Forces FileOptions to be WriteThrough here: https://github.com/mamift/CSharpTest.Net.Collections/blob/9f93733b3af7ee0e2de353e822ff54d908209b0b/src/CSharpTest.Net.Collections/IO/TransactedCompoundFile.cs#L316-L327, - // as the reflection uses otherwise will failed in .NET Core as the "_handle" field in FileStream is renamed to "_fileHandle". - StoragePerformance = StoragePerformance.CommitToDisk, - // other options? }; diff --git a/src/Umbraco.PublishedCache.NuCache/Umbraco.PublishedCache.NuCache.csproj b/src/Umbraco.PublishedCache.NuCache/Umbraco.PublishedCache.NuCache.csproj index eeccf49cf2..f0e07283fa 100644 --- a/src/Umbraco.PublishedCache.NuCache/Umbraco.PublishedCache.NuCache.csproj +++ b/src/Umbraco.PublishedCache.NuCache/Umbraco.PublishedCache.NuCache.csproj @@ -7,7 +7,7 @@ - +