From 6c0188c42be9bcb5581b0e18d8230c91928c0e41 Mon Sep 17 00:00:00 2001 From: crobibero Date: Wed, 25 Nov 2020 07:44:11 -0700 Subject: Fix efcore not returning a UTC DateTime --- .../ModelBuilderExtensions.cs | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Jellyfin.Server.Implementations/ModelBuilderExtensions.cs (limited to 'Jellyfin.Server.Implementations/ModelBuilderExtensions.cs') diff --git a/Jellyfin.Server.Implementations/ModelBuilderExtensions.cs b/Jellyfin.Server.Implementations/ModelBuilderExtensions.cs new file mode 100644 index 000000000..80ad65a42 --- /dev/null +++ b/Jellyfin.Server.Implementations/ModelBuilderExtensions.cs @@ -0,0 +1,48 @@ +using System; +using Jellyfin.Server.Implementations.ValueConverters; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace Jellyfin.Server.Implementations +{ + /// + /// Model builder extensions. + /// + public static class ModelBuilderExtensions + { + /// + /// Specify value converter for the object type. + /// + /// The model builder. + /// The . + /// The type to convert. + /// The modified . + public static ModelBuilder UseValueConverterForType(this ModelBuilder modelBuilder, ValueConverter converter) + { + var type = typeof(T); + foreach (var entityType in modelBuilder.Model.GetEntityTypes()) + { + foreach (var property in entityType.GetProperties()) + { + if (property.ClrType == type) + { + property.SetValueConverter(converter); + } + } + } + + return modelBuilder; + } + + /// + /// Specify the default . + /// + /// The model builder to extend. + /// The to specify. + public static void SetDefaultDateTimeKind(this ModelBuilder modelBuilder, DateTimeKind kind) + { + modelBuilder.UseValueConverterForType(new DateTimeKindValueConverter(kind)); + modelBuilder.UseValueConverterForType(new DateTimeKindValueConverter(kind)); + } + } +} \ No newline at end of file -- cgit v1.2.3