diff --git a/src/EFCore.Cosmos/Storage/Internal/CosmosTimeOnlyTypeMapping.cs b/src/EFCore.Cosmos/Storage/Internal/CosmosTimeOnlyTypeMapping.cs index 77a0a4ffaaf..70e1afe4b8e 100644 --- a/src/EFCore.Cosmos/Storage/Internal/CosmosTimeOnlyTypeMapping.cs +++ b/src/EFCore.Cosmos/Storage/Internal/CosmosTimeOnlyTypeMapping.cs @@ -9,7 +9,7 @@ namespace Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal; /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// -public class CosmosTimeOnlyTypeMapping : CosmosTypeMapping +public class CosmosTimeOnlyTypeMapping : CosmosTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to @@ -25,7 +25,7 @@ public class CosmosTimeOnlyTypeMapping : CosmosTypeMapping /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// - public CosmosTimeOnlyTypeMapping() : base(typeof(TimeOnly), null, null, null, CosmosJsonTimeOnlyReaderWriter.Instance) + public CosmosTimeOnlyTypeMapping() : base(jsonValueReaderWriter: CosmosJsonTimeOnlyReaderWriter.Instance) { } diff --git a/src/EFCore.Cosmos/Storage/Internal/CosmosTimeSpanTypeMapping.cs b/src/EFCore.Cosmos/Storage/Internal/CosmosTimeSpanTypeMapping.cs index 86bb1c7844f..3478d7c9c20 100644 --- a/src/EFCore.Cosmos/Storage/Internal/CosmosTimeSpanTypeMapping.cs +++ b/src/EFCore.Cosmos/Storage/Internal/CosmosTimeSpanTypeMapping.cs @@ -9,7 +9,7 @@ namespace Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal; /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// -public class CosmosTimeSpanTypeMapping : CosmosTypeMapping +public class CosmosTimeSpanTypeMapping : CosmosTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to @@ -25,7 +25,7 @@ public class CosmosTimeSpanTypeMapping : CosmosTypeMapping /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// - public CosmosTimeSpanTypeMapping() : base(typeof(TimeSpan), null, null, null, CosmosJsonTimeSpanReaderWriter.Instance) + public CosmosTimeSpanTypeMapping() : base(jsonValueReaderWriter: CosmosJsonTimeSpanReaderWriter.Instance) { } diff --git a/src/EFCore.Cosmos/Storage/Internal/CosmosTypeMappingSource.cs b/src/EFCore.Cosmos/Storage/Internal/CosmosTypeMappingSource.cs index 5cd4eb78f47..8859e43a5f8 100644 --- a/src/EFCore.Cosmos/Storage/Internal/CosmosTypeMappingSource.cs +++ b/src/EFCore.Cosmos/Storage/Internal/CosmosTypeMappingSource.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Frozen; +using System.Diagnostics.CodeAnalysis; using System.Text.Json; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; using Microsoft.EntityFrameworkCore.Cosmos.ChangeTracking.Internal; @@ -36,7 +37,7 @@ public CosmosTypeMappingSource(TypeMappingSourceDependencies dependencies) { typeof(TimeOnly), CosmosTimeOnlyTypeMapping.Default }, { typeof(TimeSpan), CosmosTimeSpanTypeMapping.Default }, { - typeof(JObject), new CosmosTypeMapping( + typeof(JObject), CreateMapping( typeof(JObject), jsonValueReaderWriter: dependencies.JsonValueReaderWriterSource.FindReaderWriter(typeof(JObject))) } }.ToFrozenDictionary(); @@ -115,10 +116,10 @@ public CosmosTypeMappingSource(TypeMappingSourceDependencies dependencies) CoreTypeMapping? typeMapping = null; return !TryFindJsonCollectionMapping(elementMappingInfo, memoryType.MakeArrayType(), null, ref typeMapping, out var _, out var readerWriter) ? null - : new CosmosTypeMapping(clrType, jsonValueReaderWriter: readerWriter) - .WithComposedConverter( - (ValueConverter)Activator.CreateInstance(typeof(ReadOnlyMemoryConverter<>).MakeGenericType(memoryType))!, - (ValueComparer)Activator.CreateInstance(typeof(ReadOnlyMemoryComparer<>).MakeGenericType(memoryType))!); + : CreateMapping(clrType, jsonValueReaderWriter: readerWriter) + .WithComposedConverter( + (ValueConverter)Activator.CreateInstance(typeof(ReadOnlyMemoryConverter<>).MakeGenericType(memoryType))!, + (ValueComparer)Activator.CreateInstance(typeof(ReadOnlyMemoryComparer<>).MakeGenericType(memoryType))!); } return clrType.IsNumeric() @@ -129,7 +130,7 @@ public CosmosTypeMappingSource(TypeMappingSourceDependencies dependencies) || clrType == typeof(DateTimeOffset) || clrType == typeof(TimeSpan) || clrType == typeof(string) - ? new CosmosTypeMapping( + ? CreateMapping( clrType, jsonValueReaderWriter: Dependencies.JsonValueReaderWriterSource.FindReaderWriter(clrType)) : null; } @@ -155,7 +156,7 @@ public CosmosTypeMappingSource(TypeMappingSourceDependencies dependencies) out var collectionReaderWriter) && elementMapping is not null) { - return new CosmosTypeMapping( + return CreateMapping( clrType, elementComparer, elementMapping: elementMapping, @@ -234,7 +235,7 @@ public CosmosTypeMappingSource(TypeMappingSourceDependencies dependencies) } } - return new CosmosTypeMapping( + return CreateMapping( clrType, CreateStringDictionaryComparer(elementMapping, elementType, clrType), jsonValueReaderWriter: jsonValueReaderWriter); @@ -245,14 +246,67 @@ public CosmosTypeMappingSource(TypeMappingSourceDependencies dependencies) return null; } + private static CosmosTypeMapping CreateMapping( + Type clrType, + ValueComparer? comparer = null, + ValueComparer? keyComparer = null, + CoreTypeMapping? elementMapping = null, + JsonValueReaderWriter? jsonValueReaderWriter = null) + => clrType switch + { + _ when clrType == typeof(bool) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(byte) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(sbyte) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(char) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(short) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(ushort) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(int) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(uint) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(long) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(ulong) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(float) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(double) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(decimal) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(string) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(Guid) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(DateTime) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(DateTimeOffset) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ when clrType == typeof(DateOnly) => Create(comparer, keyComparer, elementMapping, jsonValueReaderWriter), + _ => CreateMappingWithReflection(clrType, comparer, keyComparer, elementMapping, jsonValueReaderWriter) + }; + + private static CosmosTypeMapping Create< + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.PublicProperties)] T>( + ValueComparer? comparer, + ValueComparer? keyComparer, + CoreTypeMapping? elementMapping, + JsonValueReaderWriter? jsonValueReaderWriter) + => comparer is null && keyComparer is null && elementMapping is null && jsonValueReaderWriter is null + ? CosmosTypeMapping.Default + : new CosmosTypeMapping(comparer, keyComparer, elementMapping, jsonValueReaderWriter); + + [UnconditionalSuppressMessage( + "AOT", "IL3050:Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling.", + Justification = "The type mapping source is not used at runtime by NativeAOT applications, which use a compiled model instead.")] + private static CosmosTypeMapping CreateMappingWithReflection( + Type clrType, + ValueComparer? comparer, + ValueComparer? keyComparer, + CoreTypeMapping? elementMapping, + JsonValueReaderWriter? jsonValueReaderWriter) + { + var genericType = typeof(CosmosTypeMapping<>).MakeGenericType(clrType); + return comparer is null && keyComparer is null && elementMapping is null && jsonValueReaderWriter is null + ? (CosmosTypeMapping)genericType.GetAnyProperty(nameof(CosmosTypeMapping.Default))!.GetValue(null)! + : (CosmosTypeMapping)Activator.CreateInstance(genericType, comparer, keyComparer, elementMapping, jsonValueReaderWriter)!; + } + private static ValueComparer CreateStringDictionaryComparer( CoreTypeMapping elementMapping, Type elementType, Type dictType, bool readOnly = false) { - var unwrappedType = elementType.UnwrapNullableType(); - return (ValueComparer)Activator.CreateInstance( typeof(StringDictionaryComparer<,>).MakeGenericType(dictType, elementType), #pragma warning disable EF1001 // Internal EF Core API usage. diff --git a/src/EFCore.Cosmos/Storage/Internal/CosmosTypeMapping`1.cs b/src/EFCore.Cosmos/Storage/Internal/CosmosTypeMapping`1.cs new file mode 100644 index 00000000000..f75d181f57c --- /dev/null +++ b/src/EFCore.Cosmos/Storage/Internal/CosmosTypeMapping`1.cs @@ -0,0 +1,89 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Diagnostics.CodeAnalysis; +using Microsoft.EntityFrameworkCore.Storage.Json; + +namespace Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal; + +/// +/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to +/// the same compatibility standards as public APIs. It may be changed or removed without notice in +/// any release. You should only use it directly in your code with extreme caution and knowing that +/// doing so can result in application failures when updating to a new Entity Framework Core release. +/// +public class CosmosTypeMapping< + [DynamicallyAccessedMembers( + DynamicallyAccessedMemberTypes.PublicMethods + | DynamicallyAccessedMemberTypes.PublicProperties)] + T> : CosmosTypeMapping +{ + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public static new CosmosTypeMapping Default { get; } = new(); + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public CosmosTypeMapping( + ValueComparer? comparer = null, + ValueComparer? keyComparer = null, + CoreTypeMapping? elementMapping = null, + JsonValueReaderWriter? jsonValueReaderWriter = null) + : base(typeof(T), comparer, keyComparer, elementMapping, jsonValueReaderWriter) + { + } + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + protected CosmosTypeMapping(CoreTypeMappingParameters parameters) + : base(parameters) + { + } + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + protected override ValueComparer CreateDefaultComparer(bool favorStructuralComparisons) + => ClrType == typeof(T) + ? ValueComparer.CreateDefault(favorStructuralComparisons) + : base.CreateDefaultComparer(favorStructuralComparisons); + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public override CoreTypeMapping WithComposedConverter( + ValueConverter? converter, + ValueComparer? comparer = null, + ValueComparer? keyComparer = null, + CoreTypeMapping? elementMapping = null, + JsonValueReaderWriter? jsonValueReaderWriter = null) + => new CosmosTypeMapping( + Parameters.WithComposedConverter(converter, comparer, keyComparer, elementMapping, jsonValueReaderWriter)); + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + protected override CoreTypeMapping Clone(CoreTypeMappingParameters parameters) + => new CosmosTypeMapping(parameters); +} diff --git a/src/EFCore.Cosmos/Storage/Internal/ReadOnlyMemoryConverter.cs b/src/EFCore.Cosmos/Storage/Internal/ReadOnlyMemoryConverter.cs index 811e8c1d546..f6adaa3806e 100644 --- a/src/EFCore.Cosmos/Storage/Internal/ReadOnlyMemoryConverter.cs +++ b/src/EFCore.Cosmos/Storage/Internal/ReadOnlyMemoryConverter.cs @@ -58,6 +58,14 @@ public static ReadOnlyMemory ToMemory(T[] array) // ReadOnlyMemory instances, while the instance created with an empty array is considered not equal to the default. => array.Length == 0 ? default : new ReadOnlyMemory(array); + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public static ReadOnlyMemoryConverter Instance { get; } = new(); + /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in @@ -65,5 +73,7 @@ public static ReadOnlyMemory ToMemory(T[] array) /// doing so can result in application failures when updating to a new Entity Framework Core release. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(ReadOnlyMemory), typeof(T[]), i => new ReadOnlyMemoryConverter(i.MappingHints), DefaultHints); + = new(typeof(ReadOnlyMemory), typeof(T[]), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new ReadOnlyMemoryConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore.InMemory/Storage/Internal/InMemoryTypeMapping.cs b/src/EFCore.InMemory/Storage/Internal/InMemoryTypeMapping.cs index bbf0cd43206..05456085f22 100644 --- a/src/EFCore.InMemory/Storage/Internal/InMemoryTypeMapping.cs +++ b/src/EFCore.InMemory/Storage/Internal/InMemoryTypeMapping.cs @@ -42,7 +42,7 @@ public InMemoryTypeMapping( { } - private InMemoryTypeMapping(CoreTypeMappingParameters parameters) + private protected InMemoryTypeMapping(CoreTypeMappingParameters parameters) : base(parameters) { } diff --git a/src/EFCore.InMemory/Storage/Internal/InMemoryTypeMappingSource.cs b/src/EFCore.InMemory/Storage/Internal/InMemoryTypeMappingSource.cs index f5e83539fb6..0457254c3bf 100644 --- a/src/EFCore.InMemory/Storage/Internal/InMemoryTypeMappingSource.cs +++ b/src/EFCore.InMemory/Storage/Internal/InMemoryTypeMappingSource.cs @@ -1,6 +1,9 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Diagnostics.CodeAnalysis; +using Microsoft.EntityFrameworkCore.Storage.Json; + namespace Microsoft.EntityFrameworkCore.InMemory.Storage.Internal; /// @@ -39,8 +42,7 @@ public InMemoryTypeMappingSource(TypeMappingSourceDependencies dependencies) || clrType == typeof(string) || (clrType == typeof(byte[]) && mappingInfo.ElementTypeMapping == null)) { - return new InMemoryTypeMapping( - clrType, jsonValueReaderWriter: jsonValueReaderWriter); + return CreateMapping(clrType, jsonValueReaderWriter: jsonValueReaderWriter); } if (clrType.FullName == "NetTopologySuite.Geometries.Geometry" @@ -48,13 +50,64 @@ public InMemoryTypeMappingSource(TypeMappingSourceDependencies dependencies) { var comparer = (ValueComparer)Activator.CreateInstance(typeof(GeometryValueComparer<>).MakeGenericType(clrType))!; - return new InMemoryTypeMapping( - clrType, - comparer, - comparer, - jsonValueReaderWriter); + return CreateMapping(clrType, comparer, comparer, jsonValueReaderWriter); } return base.FindMapping(mappingInfo); } + + private static InMemoryTypeMapping CreateMapping( + Type clrType, + ValueComparer? comparer = null, + ValueComparer? keyComparer = null, + JsonValueReaderWriter? jsonValueReaderWriter = null) + => clrType switch + { + _ when clrType == typeof(bool) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(byte) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(sbyte) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(char) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(short) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(ushort) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(int) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(uint) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(long) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(ulong) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(float) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(double) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(decimal) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(string) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(Guid) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(DateTime) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(DateTimeOffset) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(DateOnly) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(TimeOnly) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(TimeSpan) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ when clrType == typeof(byte[]) => Create(comparer, keyComparer, jsonValueReaderWriter), + _ => CreateMappingWithReflection(clrType, comparer, keyComparer, jsonValueReaderWriter) + }; + + private static InMemoryTypeMapping Create< + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.PublicProperties)] T>( + ValueComparer? comparer, + ValueComparer? keyComparer, + JsonValueReaderWriter? jsonValueReaderWriter) + => comparer is null && keyComparer is null && jsonValueReaderWriter is null + ? InMemoryTypeMapping.Default + : new InMemoryTypeMapping(comparer, keyComparer, jsonValueReaderWriter); + + [UnconditionalSuppressMessage( + "AOT", "IL3050:Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling.", + Justification = "The type mapping source is not used at runtime by NativeAOT applications, which use a compiled model instead.")] + private static InMemoryTypeMapping CreateMappingWithReflection( + Type clrType, + ValueComparer? comparer, + ValueComparer? keyComparer, + JsonValueReaderWriter? jsonValueReaderWriter) + { + var genericType = typeof(InMemoryTypeMapping<>).MakeGenericType(clrType); + return comparer is null && keyComparer is null && jsonValueReaderWriter is null + ? (InMemoryTypeMapping)genericType.GetAnyProperty(nameof(InMemoryTypeMapping.Default))!.GetValue(null)! + : (InMemoryTypeMapping)Activator.CreateInstance(genericType, comparer, keyComparer, jsonValueReaderWriter)!; + } } diff --git a/src/EFCore.InMemory/Storage/Internal/InMemoryTypeMapping`1.cs b/src/EFCore.InMemory/Storage/Internal/InMemoryTypeMapping`1.cs new file mode 100644 index 00000000000..21f8ed87a79 --- /dev/null +++ b/src/EFCore.InMemory/Storage/Internal/InMemoryTypeMapping`1.cs @@ -0,0 +1,82 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Diagnostics.CodeAnalysis; +using Microsoft.EntityFrameworkCore.Storage.Json; + +namespace Microsoft.EntityFrameworkCore.InMemory.Storage.Internal; + +/// +/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to +/// the same compatibility standards as public APIs. It may be changed or removed without notice in +/// any release. You should only use it directly in your code with extreme caution and knowing that +/// doing so can result in application failures when updating to a new Entity Framework Core release. +/// +public class InMemoryTypeMapping< + [DynamicallyAccessedMembers( + DynamicallyAccessedMemberTypes.PublicMethods + | DynamicallyAccessedMemberTypes.PublicProperties)] + T> : InMemoryTypeMapping +{ + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public static new InMemoryTypeMapping Default { get; } = new(); + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public InMemoryTypeMapping( + ValueComparer? comparer = null, + ValueComparer? keyComparer = null, + JsonValueReaderWriter? jsonValueReaderWriter = null) + : base(typeof(T), comparer, keyComparer, jsonValueReaderWriter) + { + } + + private InMemoryTypeMapping(CoreTypeMappingParameters parameters) + : base(parameters) + { + } + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + protected override ValueComparer CreateDefaultComparer(bool favorStructuralComparisons) + => ClrType == typeof(T) + ? ValueComparer.CreateDefault(favorStructuralComparisons) + : base.CreateDefaultComparer(favorStructuralComparisons); + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public override CoreTypeMapping WithComposedConverter( + ValueConverter? converter, + ValueComparer? comparer = null, + ValueComparer? keyComparer = null, + CoreTypeMapping? elementMapping = null, + JsonValueReaderWriter? jsonValueReaderWriter = null) + => new InMemoryTypeMapping( + Parameters.WithComposedConverter(converter, comparer, keyComparer, elementMapping, jsonValueReaderWriter)); + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + protected override CoreTypeMapping Clone(CoreTypeMappingParameters parameters) + => new InMemoryTypeMapping(parameters); +} diff --git a/src/EFCore.Relational/Design/Internal/RelationalCSharpRuntimeAnnotationCodeGenerator.cs b/src/EFCore.Relational/Design/Internal/RelationalCSharpRuntimeAnnotationCodeGenerator.cs index ab7b9a51b47..5a4094b84b5 100644 --- a/src/EFCore.Relational/Design/Internal/RelationalCSharpRuntimeAnnotationCodeGenerator.cs +++ b/src/EFCore.Relational/Design/Internal/RelationalCSharpRuntimeAnnotationCodeGenerator.cs @@ -2481,14 +2481,11 @@ public override void Generate(IIndex index, CSharpRuntimeAnnotationCodeGenerator /// public override bool Create( CoreTypeMapping typeMapping, - CSharpRuntimeAnnotationCodeGeneratorParameters parameters, - ValueComparer? valueComparer = null, - ValueComparer? keyValueComparer = null, - ValueComparer? providerValueComparer = null) + CSharpRuntimeAnnotationCodeGeneratorParameters parameters) { if (typeMapping is not RelationalTypeMapping relationalTypeMapping) { - return base.Create(typeMapping, parameters, valueComparer, keyValueComparer, providerValueComparer); + return base.Create(typeMapping, parameters); } var mainBuilder = parameters.MainBuilder; @@ -2510,17 +2507,8 @@ public override bool Create( .AppendLine(".Clone(") .IncrementIndent(); - mainBuilder - .Append("comparer: "); - Create(valueComparer ?? relationalTypeMapping.Comparer, parameters, code); - - mainBuilder.AppendLine(",") - .Append("keyComparer: "); - Create(keyValueComparer ?? relationalTypeMapping.KeyComparer, parameters, code); - - mainBuilder.AppendLine(",") - .Append("providerValueComparer: "); - Create(providerValueComparer ?? relationalTypeMapping.ProviderValueComparer, parameters, code); + var firstArgument = true; + CreateComparers(relationalTypeMapping, parameters, code, ref firstArgument); var storeTypeDifferent = relationalTypeMapping.StoreType != defaultInstance.StoreType; var sizeDifferent = relationalTypeMapping.Size != null @@ -2542,8 +2530,9 @@ public override bool Create( || isFixedLengthDifferent) { AddNamespace(typeof(RelationalTypeMappingInfo), parameters.Namespaces); - mainBuilder.AppendLine(",") - .AppendLine("mappingInfo: new RelationalTypeMappingInfo(") + AppendArgument("mappingInfo", parameters, ref firstArgument); + mainBuilder + .AppendLine("new RelationalTypeMappingInfo(") .IncrementIndent(); var firstParameter = true; @@ -2597,42 +2586,27 @@ public override bool Create( if (relationalTypeMapping.Converter != null && relationalTypeMapping.Converter != defaultInstance.Converter) { - mainBuilder.AppendLine(",") - .Append("converter: "); - + AppendArgument("converter", parameters, ref firstArgument); Create(relationalTypeMapping.Converter, parameters, code); } - var typeDifferent = relationalTypeMapping.Converter == null - && relationalTypeMapping.ClrType != defaultInstance.ClrType; - if (typeDifferent) - { - mainBuilder.AppendLine(",") - .Append($"clrType: {code.Literal(relationalTypeMapping.ClrType)}"); - } - - var storeTypePostfixDifferent = relationalTypeMapping.StoreTypePostfix != defaultInstance.StoreTypePostfix; - if (storeTypePostfixDifferent) + if (relationalTypeMapping.StoreTypePostfix != defaultInstance.StoreTypePostfix) { - mainBuilder.AppendLine(",") - .Append($"storeTypePostfix: {code.Literal(relationalTypeMapping.StoreTypePostfix)}"); + AppendArgument("storeTypePostfix", parameters, ref firstArgument); + mainBuilder.Append(code.Literal(relationalTypeMapping.StoreTypePostfix)); } if (relationalTypeMapping.JsonValueReaderWriter != null && relationalTypeMapping.JsonValueReaderWriter != defaultInstance.JsonValueReaderWriter) { - mainBuilder.AppendLine(",") - .Append("jsonValueReaderWriter: "); - + AppendArgument("jsonValueReaderWriter", parameters, ref firstArgument); CreateJsonValueReaderWriter(relationalTypeMapping.JsonValueReaderWriter, parameters, code); } if (relationalTypeMapping.ElementTypeMapping != null && relationalTypeMapping.ElementTypeMapping != defaultInstance.ElementTypeMapping) { - mainBuilder.AppendLine(",") - .Append("elementMapping: "); - + AppendArgument("elementMapping", parameters, ref firstArgument); Create(relationalTypeMapping.ElementTypeMapping, parameters); } diff --git a/src/EFCore.Relational/EFCore.Relational.baseline.json b/src/EFCore.Relational/EFCore.Relational.baseline.json index 081cd11c9ef..cd08c5c1aa8 100644 --- a/src/EFCore.Relational/EFCore.Relational.baseline.json +++ b/src/EFCore.Relational/EFCore.Relational.baseline.json @@ -527,7 +527,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.BoolTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.BoolTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "BoolTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Boolean);" @@ -549,7 +549,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.ByteArrayTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.ByteArrayTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "ByteArrayTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Binary, int? size = null);" @@ -571,7 +571,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.ByteTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.ByteTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "ByteTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Byte);" @@ -652,7 +652,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.CharTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.CharTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "CharTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.String);" @@ -1976,7 +1976,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.DateOnlyTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.DateOnlyTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "DateOnlyTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Date);" @@ -1998,7 +1998,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.DateTimeOffsetTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.DateTimeOffsetTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "DateTimeOffsetTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.DateTimeOffset);" @@ -2020,7 +2020,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.DateTimeTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.DateTimeTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "DateTimeTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.DateTime);" @@ -2388,7 +2388,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.DecimalTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.DecimalTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "DecimalTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Decimal, int? precision = null, int? scale = null);" @@ -2531,7 +2531,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.DoubleTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.DoubleTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "DoubleTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Double);" @@ -2966,7 +2966,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.FloatTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.FloatTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "FloatTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Single);" @@ -3069,7 +3069,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.GuidTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.GuidTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "GuidTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Guid);" @@ -5370,7 +5370,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.IntTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.IntTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "IntTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Int32);" @@ -7564,7 +7564,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.LongTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.LongTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "LongTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Int64);" @@ -17605,7 +17605,7 @@ "Member": "abstract Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping Clone(Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping.RelationalTypeMappingParameters parameters);" }, { - "Member": "virtual Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping Clone(in Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingInfo? mappingInfo = null, System.Type? clrType = null, Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter? converter = null, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer? comparer = null, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer? keyComparer = null, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer? providerValueComparer = null, Microsoft.EntityFrameworkCore.Storage.CoreTypeMapping? elementMapping = null, Microsoft.EntityFrameworkCore.Storage.Json.JsonValueReaderWriter? jsonValueReaderWriter = null, Microsoft.EntityFrameworkCore.Storage.StoreTypePostfix? storeTypePostfix = null);" + "Member": "virtual Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping Clone(in Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingInfo? mappingInfo = null, Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter? converter = null, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer? comparer = null, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer? keyComparer = null, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer? providerValueComparer = null, Microsoft.EntityFrameworkCore.Storage.CoreTypeMapping? elementMapping = null, Microsoft.EntityFrameworkCore.Storage.Json.JsonValueReaderWriter? jsonValueReaderWriter = null, Microsoft.EntityFrameworkCore.Storage.StoreTypePostfix? storeTypePostfix = null);" }, { "Member": "virtual void ConfigureParameter(System.Data.Common.DbParameter parameter);" @@ -17752,6 +17752,20 @@ } ] }, + { + "Type": "abstract class Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)] T> : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Methods": [ + { + "Member": "RelationalTypeMapping(Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping.RelationalTypeMappingParameters parameters);" + }, + { + "Member": "RelationalTypeMapping(string storeType, System.Type clrType, System.Data.DbType? dbType = null, bool unicode = false, int? size = null, bool fixedLength = false, int? precision = null, int? scale = null, Microsoft.EntityFrameworkCore.Storage.Json.JsonValueReaderWriter? jsonValueReaderWriter = null);" + }, + { + "Member": "override Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer CreateDefaultComparer(bool favorStructuralComparisons);" + } + ] + }, { "Type": "static class Microsoft.EntityFrameworkCore.RelationalTypeMappingConfigurationBuilderExtensions", "Methods": [ @@ -18414,7 +18428,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.SByteTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.SByteTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "SByteTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.SByte);" @@ -18837,7 +18851,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.ShortTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.ShortTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "ShortTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Int16);" @@ -19991,7 +20005,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.StringTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.StringTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "StringTypeMapping(string storeType, System.Data.DbType? dbType, bool unicode = false, int? size = null);" @@ -20504,7 +20518,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.TimeOnlyTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.TimeOnlyTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "TimeOnlyTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Time);" @@ -20526,7 +20540,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.TimeSpanTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.TimeSpanTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "TimeSpanTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.Time);" @@ -20696,7 +20710,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.UIntTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.UIntTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "UIntTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.UInt32);" @@ -20715,7 +20729,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.ULongTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.ULongTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "ULongTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.UInt64);" @@ -21039,7 +21053,7 @@ ] }, { - "Type": "class Microsoft.EntityFrameworkCore.Storage.UShortTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", + "Type": "class Microsoft.EntityFrameworkCore.Storage.UShortTypeMapping : Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping", "Methods": [ { "Member": "UShortTypeMapping(string storeType, System.Data.DbType? dbType = System.Data.DbType.UInt16);" diff --git a/src/EFCore.Relational/Query/SqlNullabilityProcessor.cs b/src/EFCore.Relational/Query/SqlNullabilityProcessor.cs index 65ba6242820..8dd5fc6445f 100644 --- a/src/EFCore.Relational/Query/SqlNullabilityProcessor.cs +++ b/src/EFCore.Relational/Query/SqlNullabilityProcessor.cs @@ -1029,8 +1029,7 @@ InExpression ProcessInExpressionValues( // parameters all share the same query plan, reducing query plan fragmentation. if (translationMode is ParameterTranslationMode.MultipleParameters) { - var padFactor = CalculateParameterBucketSize(values.Count, elementTypeMapping); - var padding = CalculatePadding(values.Count, padFactor); + var padding = CalculateBucketPadding(values.Count, elementTypeMapping); for (var i = 0; i < padding; i++) { // Create parameter for value if we didn't create it yet, @@ -1700,6 +1699,17 @@ protected virtual int CalculateParameterBucketSize(int count, RelationalTypeMapp protected virtual int CalculatePadding(int count, int padFactor) => (padFactor - (count % padFactor)) % padFactor; + /// + /// Calculates the number of padding parameters to append to a multi-parameter collection expansion so that + /// parameter counts align to a shared bucket size. This is composed from + /// and . + /// + /// Number of value parameters. + /// The type mapping for the collection element. + [EntityFrameworkInternal] + protected virtual int CalculateBucketPadding(int count, RelationalTypeMapping elementTypeMapping) + => CalculatePadding(count, CalculateParameterBucketSize(count, elementTypeMapping)); + // Note that we can check parameter values for null since we cache by the parameter nullability; but we cannot do the same for bool. private bool IsNull(SqlExpression? expression) => expression is SqlConstantExpression { Value: null } diff --git a/src/EFCore.Relational/Storage/BoolTypeMapping.cs b/src/EFCore.Relational/Storage/BoolTypeMapping.cs index 047efe8c78b..0a4a572253c 100644 --- a/src/EFCore.Relational/Storage/BoolTypeMapping.cs +++ b/src/EFCore.Relational/Storage/BoolTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class BoolTypeMapping : RelationalTypeMapping +public class BoolTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/ByteArrayTypeMapping.cs b/src/EFCore.Relational/Storage/ByteArrayTypeMapping.cs index e56ecbe724c..e9313380dd8 100644 --- a/src/EFCore.Relational/Storage/ByteArrayTypeMapping.cs +++ b/src/EFCore.Relational/Storage/ByteArrayTypeMapping.cs @@ -21,7 +21,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class ByteArrayTypeMapping : RelationalTypeMapping +public class ByteArrayTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/ByteTypeMapping.cs b/src/EFCore.Relational/Storage/ByteTypeMapping.cs index bb34b9a3bd1..3007f9756f6 100644 --- a/src/EFCore.Relational/Storage/ByteTypeMapping.cs +++ b/src/EFCore.Relational/Storage/ByteTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class ByteTypeMapping : RelationalTypeMapping +public class ByteTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/CharTypeMapping.cs b/src/EFCore.Relational/Storage/CharTypeMapping.cs index 92750cd2554..84c36418de7 100644 --- a/src/EFCore.Relational/Storage/CharTypeMapping.cs +++ b/src/EFCore.Relational/Storage/CharTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class CharTypeMapping : RelationalTypeMapping +public class CharTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/DateOnlyTypeMapping.cs b/src/EFCore.Relational/Storage/DateOnlyTypeMapping.cs index 5ed50140f3d..5edc25eee97 100644 --- a/src/EFCore.Relational/Storage/DateOnlyTypeMapping.cs +++ b/src/EFCore.Relational/Storage/DateOnlyTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class DateOnlyTypeMapping : RelationalTypeMapping +public class DateOnlyTypeMapping : RelationalTypeMapping { private const string DateOnlyFormatConst = @"{0:yyyy-MM-dd}"; diff --git a/src/EFCore.Relational/Storage/DateTimeOffsetTypeMapping.cs b/src/EFCore.Relational/Storage/DateTimeOffsetTypeMapping.cs index 8c73345b098..0da9243248b 100644 --- a/src/EFCore.Relational/Storage/DateTimeOffsetTypeMapping.cs +++ b/src/EFCore.Relational/Storage/DateTimeOffsetTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class DateTimeOffsetTypeMapping : RelationalTypeMapping +public class DateTimeOffsetTypeMapping : RelationalTypeMapping { private const string DateTimeOffsetFormatConst = @"{0:yyyy-MM-dd HH\:mm\:ss.fffffffzzz}"; diff --git a/src/EFCore.Relational/Storage/DateTimeTypeMapping.cs b/src/EFCore.Relational/Storage/DateTimeTypeMapping.cs index 91a82dd0190..3e4ba7f61eb 100644 --- a/src/EFCore.Relational/Storage/DateTimeTypeMapping.cs +++ b/src/EFCore.Relational/Storage/DateTimeTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class DateTimeTypeMapping : RelationalTypeMapping +public class DateTimeTypeMapping : RelationalTypeMapping { private const string DateTimeFormatConst = @"{0:yyyy-MM-dd HH\:mm\:ss.fffffff}"; diff --git a/src/EFCore.Relational/Storage/DecimalTypeMapping.cs b/src/EFCore.Relational/Storage/DecimalTypeMapping.cs index c7706222dda..90499423af8 100644 --- a/src/EFCore.Relational/Storage/DecimalTypeMapping.cs +++ b/src/EFCore.Relational/Storage/DecimalTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class DecimalTypeMapping : RelationalTypeMapping +public class DecimalTypeMapping : RelationalTypeMapping { private const string DecimalFormatConst = "{0:0.0###########################}"; diff --git a/src/EFCore.Relational/Storage/DoubleTypeMapping.cs b/src/EFCore.Relational/Storage/DoubleTypeMapping.cs index e26f65b4e67..d7fbc832cf9 100644 --- a/src/EFCore.Relational/Storage/DoubleTypeMapping.cs +++ b/src/EFCore.Relational/Storage/DoubleTypeMapping.cs @@ -20,7 +20,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class DoubleTypeMapping : RelationalTypeMapping +public class DoubleTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/FloatTypeMapping.cs b/src/EFCore.Relational/Storage/FloatTypeMapping.cs index 4de8a3f9aa5..42329ee589b 100644 --- a/src/EFCore.Relational/Storage/FloatTypeMapping.cs +++ b/src/EFCore.Relational/Storage/FloatTypeMapping.cs @@ -20,7 +20,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class FloatTypeMapping : RelationalTypeMapping +public class FloatTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/GuidTypeMapping.cs b/src/EFCore.Relational/Storage/GuidTypeMapping.cs index ecebf9b1172..a27d164ed11 100644 --- a/src/EFCore.Relational/Storage/GuidTypeMapping.cs +++ b/src/EFCore.Relational/Storage/GuidTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class GuidTypeMapping : RelationalTypeMapping +public class GuidTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/IntTypeMapping.cs b/src/EFCore.Relational/Storage/IntTypeMapping.cs index 78d071d1d78..c09d2547233 100644 --- a/src/EFCore.Relational/Storage/IntTypeMapping.cs +++ b/src/EFCore.Relational/Storage/IntTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class IntTypeMapping : RelationalTypeMapping +public class IntTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/LongTypeMapping.cs b/src/EFCore.Relational/Storage/LongTypeMapping.cs index b4ee949b1b3..00a457ddcf6 100644 --- a/src/EFCore.Relational/Storage/LongTypeMapping.cs +++ b/src/EFCore.Relational/Storage/LongTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class LongTypeMapping : RelationalTypeMapping +public class LongTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/RelationalTypeMapping.cs b/src/EFCore.Relational/Storage/RelationalTypeMapping.cs index f6ecfe26141..de90897f695 100644 --- a/src/EFCore.Relational/Storage/RelationalTypeMapping.cs +++ b/src/EFCore.Relational/Storage/RelationalTypeMapping.cs @@ -419,7 +419,9 @@ protected override CoreTypeMapping Clone(CoreTypeMappingParameters parameters) /// The size of data the property is configured to store, or null if no size is configured. /// The newly created mapping. public virtual RelationalTypeMapping WithStoreTypeAndSize(string storeType, int? size) - => Clone(Parameters.WithStoreTypeAndSize(storeType, size)); + => storeType == StoreType && size == Size + ? this + : Clone(Parameters.WithStoreTypeAndSize(storeType, size)); /// /// Creates a copy of this mapping. @@ -428,7 +430,9 @@ public virtual RelationalTypeMapping WithStoreTypeAndSize(string storeType, int? /// The scale of data the property is configured to store, or null if no size is configured. /// The newly created mapping. public virtual RelationalTypeMapping WithPrecisionAndScale(int? precision, int? scale) - => Clone(Parameters.WithPrecisionAndScale(precision, scale)); + => precision == Precision && scale == Scale + ? this + : Clone(Parameters.WithPrecisionAndScale(precision, scale)); /// public override CoreTypeMapping WithComposedConverter( @@ -446,14 +450,21 @@ public override CoreTypeMapping WithComposedConverter( /// The cloned mapping, or the original mapping if no clone was needed. public virtual RelationalTypeMapping WithTypeMappingInfo( in RelationalTypeMappingInfo mappingInfo) - => Clone(Parameters.WithTypeMappingInfo(mappingInfo)); + => (mappingInfo.StoreTypeName == null || mappingInfo.StoreTypeName == StoreType) + && (mappingInfo.DbType == null || mappingInfo.DbType == DbType) + && (mappingInfo.IsUnicode == null || mappingInfo.IsUnicode == IsUnicode) + && (mappingInfo.Size == null || mappingInfo.Size == Size) + && (mappingInfo.IsFixedLength == null || mappingInfo.IsFixedLength == IsFixedLength) + && (mappingInfo.Precision == null || mappingInfo.Precision == Precision) + && (mappingInfo.Scale == null || mappingInfo.Scale == Scale) + ? this + : Clone(Parameters.WithTypeMappingInfo(mappingInfo)); /// /// Clones the type mapping to update any parameter if needed. /// /// The mapping info containing the facets to use. /// The new postfix, or to leave unchanged. - /// The .NET type used in the EF model, or to leave unchanged. /// The value converter, or to leave unchanged. /// The value comparer, or to leave unchanged. /// The key value comparer, or to leave unchanged. @@ -463,7 +474,6 @@ public virtual RelationalTypeMapping WithTypeMappingInfo( /// The cloned mapping, or the original mapping if no clone was needed. public virtual RelationalTypeMapping Clone( in RelationalTypeMappingInfo? mappingInfo = null, - Type? clrType = null, ValueConverter? converter = null, ValueComparer? comparer = null, ValueComparer? keyComparer = null, @@ -478,8 +488,7 @@ public virtual RelationalTypeMapping Clone( parameters = parameters.WithTypeMappingInfo(mappingInfo.Value, storeTypePostfix); } - if (clrType != null - || converter != null + if (converter != null || comparer != null || keyComparer != null || providerValueComparer != null @@ -488,7 +497,7 @@ public virtual RelationalTypeMapping Clone( { parameters = parameters.WithCoreParameters( new CoreTypeMappingParameters( - clrType ?? Parameters.CoreParameters.ClrType, + Parameters.CoreParameters.ClrType, converter ?? Parameters.CoreParameters.Converter, comparer ?? Parameters.CoreParameters.Comparer, keyComparer ?? Parameters.CoreParameters.KeyComparer, diff --git a/src/EFCore.Relational/Storage/RelationalTypeMapping`1.cs b/src/EFCore.Relational/Storage/RelationalTypeMapping`1.cs new file mode 100644 index 00000000000..710c83e8ee2 --- /dev/null +++ b/src/EFCore.Relational/Storage/RelationalTypeMapping`1.cs @@ -0,0 +1,77 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Data; +using System.Diagnostics.CodeAnalysis; +using Microsoft.EntityFrameworkCore.Storage.Json; + +namespace Microsoft.EntityFrameworkCore.Storage; + +/// +/// +/// Represents the mapping between a .NET type and a database type, where the .NET type used in the EF model +/// is statically known. +/// +/// +/// This type is typically used by database providers (and other extensions). It is generally +/// not used in application code. +/// +/// +/// +/// +/// Knowing the model CLR type statically allows the default instances to be created +/// without reflection, which is required for NativeAOT compatibility. +/// +/// +/// See Implementation of database providers and extensions +/// for more information and examples. +/// +/// +/// The .NET type used in the EF model. +public abstract class RelationalTypeMapping< + [DynamicallyAccessedMembers( + DynamicallyAccessedMemberTypes.PublicMethods + | DynamicallyAccessedMemberTypes.PublicProperties)] + T> : RelationalTypeMapping +{ + /// + /// Initializes a new instance of the class. + /// + /// The parameters for this mapping. + protected RelationalTypeMapping(RelationalTypeMappingParameters parameters) + : base(parameters) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The name of the database type. + /// The .NET type. + /// The to be used. + /// A value indicating whether the type should handle Unicode data or not. + /// The size of data the property is configured to store, or null if no size is configured. + /// A value indicating whether the type has fixed length data or not. + /// The precision of data the property is configured to store, or null if no precision is configured. + /// The scale of data the property is configured to store, or null if no scale is configured. + /// Handles reading and writing JSON values for instances of the mapped type. + protected RelationalTypeMapping( + string storeType, + Type clrType, + DbType? dbType = null, + bool unicode = false, + int? size = null, + bool fixedLength = false, + int? precision = null, + int? scale = null, + JsonValueReaderWriter? jsonValueReaderWriter = null) + : base(storeType, clrType, dbType, unicode, size, fixedLength, precision, scale, jsonValueReaderWriter) + { + } + + /// + protected override ValueComparer CreateDefaultComparer(bool favorStructuralComparisons) + => ClrType == typeof(T) + ? ValueComparer.CreateDefault(favorStructuralComparisons) + : base.CreateDefaultComparer(favorStructuralComparisons); +} diff --git a/src/EFCore.Relational/Storage/SByteTypeMapping.cs b/src/EFCore.Relational/Storage/SByteTypeMapping.cs index eb14e2b0fa9..fd9aac0c8af 100644 --- a/src/EFCore.Relational/Storage/SByteTypeMapping.cs +++ b/src/EFCore.Relational/Storage/SByteTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class SByteTypeMapping : RelationalTypeMapping +public class SByteTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/ShortTypeMapping.cs b/src/EFCore.Relational/Storage/ShortTypeMapping.cs index 624a559ed27..fface42cd17 100644 --- a/src/EFCore.Relational/Storage/ShortTypeMapping.cs +++ b/src/EFCore.Relational/Storage/ShortTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class ShortTypeMapping : RelationalTypeMapping +public class ShortTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/StringTypeMapping.cs b/src/EFCore.Relational/Storage/StringTypeMapping.cs index 316b245781e..0cae9f5cc4a 100644 --- a/src/EFCore.Relational/Storage/StringTypeMapping.cs +++ b/src/EFCore.Relational/Storage/StringTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class StringTypeMapping : RelationalTypeMapping +public class StringTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/TimeOnlyTypeMapping.cs b/src/EFCore.Relational/Storage/TimeOnlyTypeMapping.cs index 93232892868..2b441ead054 100644 --- a/src/EFCore.Relational/Storage/TimeOnlyTypeMapping.cs +++ b/src/EFCore.Relational/Storage/TimeOnlyTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class TimeOnlyTypeMapping : RelationalTypeMapping +public class TimeOnlyTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/TimeSpanTypeMapping.cs b/src/EFCore.Relational/Storage/TimeSpanTypeMapping.cs index 8d63c09a0d3..412988cec37 100644 --- a/src/EFCore.Relational/Storage/TimeSpanTypeMapping.cs +++ b/src/EFCore.Relational/Storage/TimeSpanTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class TimeSpanTypeMapping : RelationalTypeMapping +public class TimeSpanTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/UIntTypeMapping.cs b/src/EFCore.Relational/Storage/UIntTypeMapping.cs index 611ab0e60a2..b0506247696 100644 --- a/src/EFCore.Relational/Storage/UIntTypeMapping.cs +++ b/src/EFCore.Relational/Storage/UIntTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class UIntTypeMapping : RelationalTypeMapping +public class UIntTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/ULongTypeMapping.cs b/src/EFCore.Relational/Storage/ULongTypeMapping.cs index 8fe8c8c61fe..55d221d7f81 100644 --- a/src/EFCore.Relational/Storage/ULongTypeMapping.cs +++ b/src/EFCore.Relational/Storage/ULongTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class ULongTypeMapping : RelationalTypeMapping +public class ULongTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Relational/Storage/UShortTypeMapping.cs b/src/EFCore.Relational/Storage/UShortTypeMapping.cs index c48214053e8..e1f277f4c5a 100644 --- a/src/EFCore.Relational/Storage/UShortTypeMapping.cs +++ b/src/EFCore.Relational/Storage/UShortTypeMapping.cs @@ -19,7 +19,7 @@ namespace Microsoft.EntityFrameworkCore.Storage; /// See Implementation of database providers and extensions /// for more information and examples. /// -public class UShortTypeMapping : RelationalTypeMapping +public class UShortTypeMapping : RelationalTypeMapping { /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.SqlServer/Query/Internal/SqlServerSqlNullabilityProcessor.cs b/src/EFCore.SqlServer/Query/Internal/SqlServerSqlNullabilityProcessor.cs index b663763c70f..e34984a3e03 100644 --- a/src/EFCore.SqlServer/Query/Internal/SqlServerSqlNullabilityProcessor.cs +++ b/src/EFCore.SqlServer/Query/Internal/SqlServerSqlNullabilityProcessor.cs @@ -48,7 +48,7 @@ public override Expression Process(Expression queryExpression, ParametersCacheDe parametersDecorator, CollectionParameterTranslationMode, #pragma warning disable EF1001 - (count, elementTypeMapping) => CalculatePadding(count, CalculateParameterBucketSize(count, elementTypeMapping))); + CalculateBucketPadding); #pragma warning restore EF1001 parametersCounter.Visit(queryExpression); _totalParameterCount = parametersCounter.Count; @@ -509,14 +509,14 @@ protected override Expression VisitExtension(Expression node) private void ProcessCollectionParameter(SqlParameterExpression sqlParameterExpression, bool bucketization) { - if (!_visitedSqlParameters.Add(sqlParameterExpression)) - { - return; - } + // Mark the parameter as visited so the subsequent child visit on this SqlParameterExpression (which would + // hit the generic SqlParameterExpression branch and add 1 to Count) is suppressed. + _visitedSqlParameters.Add(sqlParameterExpression); switch (sqlParameterExpression.TranslationMode ?? collectionParameterTranslationMode) { case ParameterTranslationMode.MultipleParameters: + // Count expansion size per occurrence. var parameters = parametersDecorator.GetAndDisableCaching(); var count = ((IEnumerable?)parameters[sqlParameterExpression.Name])?.Cast().Count() ?? 0; Count += count; diff --git a/src/EFCore/ChangeTracking/Internal/DefaultValueComparer.cs b/src/EFCore/ChangeTracking/Internal/DefaultValueComparer.cs new file mode 100644 index 00000000000..c44dbbd9390 --- /dev/null +++ b/src/EFCore/ChangeTracking/Internal/DefaultValueComparer.cs @@ -0,0 +1,218 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Collections; + +namespace Microsoft.EntityFrameworkCore.ChangeTracking.Internal; + +/// +/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to +/// the same compatibility standards as public APIs. It may be changed or removed without notice in +/// any release. You should only use it directly in your code with extreme caution and knowing that +/// doing so can result in application failures when updating to a new Entity Framework Core release. +/// +// PublicMethods is required to preserve e.g. GetHashCode +public class DefaultValueComparer + <[DynamicallyAccessedMembers( + DynamicallyAccessedMemberTypes.PublicMethods + | DynamicallyAccessedMemberTypes.PublicProperties)] + T> : ValueComparer +{ + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public static new ValueComparer Default { get; } = new DefaultValueComparer(favorStructuralComparisons: false); + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public static new ValueComparer DefaultWithStructuralComparisons { get; } = + (typeof(IStructuralEquatable).IsAssignableFrom(typeof(T)) || typeof(T).IsArray) + ? new DefaultValueComparer(favorStructuralComparisons: true) + : Default; + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public DefaultValueComparer(bool favorStructuralComparisons) + : base(favorStructuralComparisons) + { + } + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public DefaultValueComparer(Expression> equalsExpression, bool favorStructuralComparisons) + : base( + equalsExpression, + CreateDefaultHashCodeExpression(favorStructuralComparisons), + CreateDefaultSnapshotExpression(favorStructuralComparisons)) + { + } + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public override Expression ExtractEqualsBody(Expression leftExpression, Expression rightExpression) + => Expression.Equal(leftExpression, rightExpression); + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public override Expression ExtractSnapshotBody(Expression expression) + => expression; + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public override object? Snapshot(object? instance) + => instance; + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public override T Snapshot(T instance) + => instance; +} + +/// +/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to +/// the same compatibility standards as public APIs. It may be changed or removed without notice in +/// any release. You should only use it directly in your code with extreme caution and knowing that +/// doing so can result in application failures when updating to a new Entity Framework Core release. +/// +// The equality operator returns false for NaNs, but the Equals method returns true. +public sealed class DefaultDoubleValueComparer(bool favorStructuralComparisons) + : DefaultValueComparer((v1, v2) => v1.Equals(v2), favorStructuralComparisons) +{ + private static readonly MethodInfo DoubleEqualsMethodInfo + = typeof(double).GetRuntimeMethod(nameof(double.Equals), [typeof(double)])!; + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public static new ValueComparer Default { get; } = new DefaultDoubleValueComparer(favorStructuralComparisons: false); + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public static new ValueComparer DefaultWithStructuralComparisons { get; } = Default; + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public override Expression ExtractEqualsBody(Expression leftExpression, Expression rightExpression) + => Expression.Call(leftExpression, DoubleEqualsMethodInfo, rightExpression); +} + +/// +/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to +/// the same compatibility standards as public APIs. It may be changed or removed without notice in +/// any release. You should only use it directly in your code with extreme caution and knowing that +/// doing so can result in application failures when updating to a new Entity Framework Core release. +/// +// The equality operator returns false for NaNs, but the Equals method returns true. +public sealed class DefaultFloatValueComparer(bool favorStructuralComparisons) + : DefaultValueComparer((v1, v2) => v1.Equals(v2), favorStructuralComparisons) +{ + private static readonly MethodInfo FloatEqualsMethodInfo + = typeof(float).GetRuntimeMethod(nameof(float.Equals), [typeof(float)])!; + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public static new ValueComparer Default { get; } = new DefaultFloatValueComparer(favorStructuralComparisons: false); + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public static new ValueComparer DefaultWithStructuralComparisons { get; } = Default; + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public override Expression ExtractEqualsBody(Expression leftExpression, Expression rightExpression) + => Expression.Call(leftExpression, FloatEqualsMethodInfo, rightExpression); +} + +/// +/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to +/// the same compatibility standards as public APIs. It may be changed or removed without notice in +/// any release. You should only use it directly in your code with extreme caution and knowing that +/// doing so can result in application failures when updating to a new Entity Framework Core release. +/// +// In .NET, two DateTimeOffset instances are considered equal if they represent the same point in time but with different +// time zone offsets. This comparer uses EqualsExact, which considers such DateTimeOffset as non-equal. +public sealed class DefaultDateTimeOffsetValueComparer(bool favorStructuralComparisons) + : DefaultValueComparer((v1, v2) => v1.EqualsExact(v2), favorStructuralComparisons) +{ + private static readonly MethodInfo EqualsExactMethodInfo + = typeof(DateTimeOffset).GetRuntimeMethod(nameof(DateTimeOffset.EqualsExact), [typeof(DateTimeOffset)])!; + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public static new ValueComparer Default { get; } = new DefaultDateTimeOffsetValueComparer(favorStructuralComparisons: false); + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public static new ValueComparer DefaultWithStructuralComparisons { get; } = Default; + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public override Expression ExtractEqualsBody(Expression leftExpression, Expression rightExpression) + => Expression.Call(leftExpression, EqualsExactMethodInfo, rightExpression); +} diff --git a/src/EFCore/ChangeTracking/ValueComparer.cs b/src/EFCore/ChangeTracking/ValueComparer.cs index 06423fbf54f..853ca2a2ba0 100644 --- a/src/EFCore/ChangeTracking/ValueComparer.cs +++ b/src/EFCore/ChangeTracking/ValueComparer.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Concurrent; +using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; namespace Microsoft.EntityFrameworkCore.ChangeTracking; @@ -25,12 +26,6 @@ namespace Microsoft.EntityFrameworkCore.ChangeTracking; /// public abstract class ValueComparer : IEqualityComparer, IEqualityComparer { - private static readonly MethodInfo DoubleEqualsMethodInfo - = typeof(double).GetRuntimeMethod(nameof(double.Equals), [typeof(double)])!; - - private static readonly MethodInfo FloatEqualsMethodInfo - = typeof(float).GetRuntimeMethod(nameof(float.Equals), [typeof(float)])!; - internal static readonly MethodInfo EqualityComparerHashCodeMethod = typeof(IEqualityComparer).GetRuntimeMethod(nameof(IEqualityComparer.GetHashCode), [typeof(object)])!; @@ -255,6 +250,9 @@ public static HashCode Add(HashCode hash, int code) /// implements it. This is usually used when byte arrays act as keys. /// /// The . + [RequiresDynamicCode( + "Creating a default value comparer for the given type requires calling MakeGenericMethod, which is not compatible with NativeAOT. " + + "Use the generic CreateDefault overload instead.")] public static ValueComparer CreateDefault( [DynamicallyAccessedMembers( DynamicallyAccessedMemberTypes.PublicMethods @@ -291,20 +289,26 @@ public static ValueComparer CreateDefault // The equality operator returns false for NaNs, but the Equals methods returns true if (nonNullableType == typeof(double)) { - return new DefaultDoubleValueComparer(favorStructuralComparisons); + return favorStructuralComparisons + ? DefaultDoubleValueComparer.DefaultWithStructuralComparisons + : DefaultDoubleValueComparer.Default; } if (nonNullableType == typeof(float)) { - return new DefaultFloatValueComparer(favorStructuralComparisons); + return favorStructuralComparisons + ? DefaultFloatValueComparer.DefaultWithStructuralComparisons + : DefaultFloatValueComparer.Default; } if (nonNullableType == typeof(DateTimeOffset)) { - return new DefaultDateTimeOffsetValueComparer(favorStructuralComparisons); + return favorStructuralComparisons + ? DefaultDateTimeOffsetValueComparer.DefaultWithStructuralComparisons + : DefaultDateTimeOffsetValueComparer.Default; } - return nonNullableType.IsInteger() + if (nonNullableType.IsInteger() || nonNullableType == typeof(decimal) || nonNullableType == typeof(bool) || nonNullableType == typeof(string) @@ -312,68 +316,15 @@ public static ValueComparer CreateDefault || nonNullableType == typeof(DateOnly) || nonNullableType == typeof(Guid) || nonNullableType == typeof(TimeSpan) - || nonNullableType == typeof(TimeOnly) - ? new DefaultValueComparer(favorStructuralComparisons) - : new ValueComparer(favorStructuralComparisons); - } - - // PublicMethods is required to preserve e.g. GetHashCode - internal class DefaultValueComparer - <[DynamicallyAccessedMembers( - DynamicallyAccessedMemberTypes.PublicMethods - | DynamicallyAccessedMemberTypes.PublicProperties)] - T> : ValueComparer - { - public DefaultValueComparer(bool favorStructuralComparisons) - : base(favorStructuralComparisons) - { - } - - public DefaultValueComparer(Expression> equalsExpression, bool favorStructuralComparisons) - : base( - equalsExpression, - CreateDefaultHashCodeExpression(favorStructuralComparisons), - CreateDefaultSnapshotExpression(favorStructuralComparisons)) + || nonNullableType == typeof(TimeOnly)) { + return favorStructuralComparisons + ? DefaultValueComparer.DefaultWithStructuralComparisons + : DefaultValueComparer.Default; } - public override Expression ExtractEqualsBody(Expression leftExpression, Expression rightExpression) - => Expression.Equal(leftExpression, rightExpression); - - public override Expression ExtractSnapshotBody(Expression expression) - => expression; - - public override object? Snapshot(object? instance) - => instance; - - public override T Snapshot(T instance) - => instance; - } - - internal sealed class DefaultDoubleValueComparer(bool favorStructuralComparisons) - : DefaultValueComparer((v1, v2) => v1.Equals(v2), favorStructuralComparisons) - { - public override Expression ExtractEqualsBody(Expression leftExpression, Expression rightExpression) - => Expression.Call(leftExpression, DoubleEqualsMethodInfo, rightExpression); - } - - internal sealed class DefaultFloatValueComparer(bool favorStructuralComparisons) - : DefaultValueComparer((v1, v2) => v1.Equals(v2), favorStructuralComparisons) - { - public override Expression ExtractEqualsBody(Expression leftExpression, Expression rightExpression) - => Expression.Call(leftExpression, FloatEqualsMethodInfo, rightExpression); - } - - internal sealed class DefaultDateTimeOffsetValueComparer(bool favorStructuralComparisons) - : DefaultValueComparer((v1, v2) => v1.EqualsExact(v2), favorStructuralComparisons) - { - private static readonly MethodInfo EqualsExactMethodInfo - = typeof(DateTimeOffset).GetRuntimeMethod(nameof(DateTimeOffset.EqualsExact), [typeof(DateTimeOffset)])!; - - // In .NET, two DateTimeOffset instances are considered equal if they represent the same point in time but with different - // time zone offsets. This comparer uses EqualsExact, which considers such DateTimeOffset as non-equal. - - public override Expression ExtractEqualsBody(Expression leftExpression, Expression rightExpression) - => Expression.Call(leftExpression, EqualsExactMethodInfo, rightExpression); + return favorStructuralComparisons + ? ValueComparer.DefaultWithStructuralComparisons + : ValueComparer.Default; } } diff --git a/src/EFCore/ChangeTracking/ValueComparerExtensions.cs b/src/EFCore/ChangeTracking/ValueComparerExtensions.cs index 6bb7b64879b..0fe82e38f5d 100644 --- a/src/EFCore/ChangeTracking/ValueComparerExtensions.cs +++ b/src/EFCore/ChangeTracking/ValueComparerExtensions.cs @@ -1,6 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; + namespace Microsoft.EntityFrameworkCore.ChangeTracking; /// @@ -18,5 +20,5 @@ public static class ValueComparerExtensions /// if the value comparer is the default; otherwise. public static bool IsDefault(this ValueComparer valueComparer) => valueComparer.GetType().IsGenericType - && valueComparer.GetType().GetGenericTypeDefinition() == typeof(ValueComparer.DefaultValueComparer<>); + && valueComparer.GetType().GetGenericTypeDefinition() == typeof(DefaultValueComparer<>); } diff --git a/src/EFCore/ChangeTracking/ValueComparer`.cs b/src/EFCore/ChangeTracking/ValueComparer`.cs index 7631f074234..f63055e4d15 100644 --- a/src/EFCore/ChangeTracking/ValueComparer`.cs +++ b/src/EFCore/ChangeTracking/ValueComparer`.cs @@ -37,6 +37,21 @@ public class ValueComparer private Func? _hashCode; private Func? _snapshot; + /// + /// The default for , using a shallow copy for snapshots + /// and not favoring . + /// + public static ValueComparer Default { get; } = new ValueComparer(favorStructuralComparisons: false); + + /// + /// The default for , favoring + /// when the type implements it. This is usually used when byte arrays act as keys. + /// + public static ValueComparer DefaultWithStructuralComparisons { get; } = + (typeof(IStructuralEquatable).IsAssignableFrom(typeof(T)) || typeof(T).IsArray) + ? new ValueComparer(favorStructuralComparisons: true) + : Default; + /// /// Creates a new with a default comparison /// expression and a shallow copy for the snapshot. @@ -181,11 +196,14 @@ protected static Expression> CreateDefaultSnapshotExpression(bool fav return v => v; } + // Use Array.Clone() instead of Enumerable.ToArray.MakeGenericMethod to avoid runtime reflection. + // Array.Clone() works on any array type and is AOT-safe. var sourceParameter = Parameter(typeof(T), "source"); + var cloneExpression = Call( + Convert(sourceParameter, typeof(Array)), + typeof(Array).GetMethod(nameof(Array.Clone), System.Type.EmptyTypes)!); return Lambda>( - Call( - EnumerableMethods.ToArray.MakeGenericMethod(typeof(T).GetElementType()!), - sourceParameter), + Convert(cloneExpression, typeof(T)), sourceParameter); } diff --git a/src/EFCore/Design/ICSharpHelper.cs b/src/EFCore/Design/ICSharpHelper.cs index 9f37459a130..23ba3d3507b 100644 --- a/src/EFCore/Design/ICSharpHelper.cs +++ b/src/EFCore/Design/ICSharpHelper.cs @@ -89,7 +89,7 @@ public interface ICSharpHelper /// The identifier to use for parameter in the lambda. /// The lambda. string Lambda(IEnumerable properties, string? lambdaIdentifier = null) - => Lambda(properties.Select(p => p.Name).ToList(), lambdaIdentifier); + => Lambda(properties.Cast(), lambdaIdentifier); /// /// Generates a property accessor lambda. Properties declared on a complex type are emitted using the dotted path diff --git a/src/EFCore/Design/Internal/CSharpRuntimeAnnotationCodeGenerator.cs b/src/EFCore/Design/Internal/CSharpRuntimeAnnotationCodeGenerator.cs index 88dace98a60..08c854b1060 100644 --- a/src/EFCore/Design/Internal/CSharpRuntimeAnnotationCodeGenerator.cs +++ b/src/EFCore/Design/Internal/CSharpRuntimeAnnotationCodeGenerator.cs @@ -373,7 +373,10 @@ public static void Create( CSharpRuntimeAnnotationCodeGeneratorParameters parameters, ICSharpHelper codeHelper) { - var missingUnsafeAccessors = new HashSet(); + if (TryCreateInstanceConverter(converter, parameters, codeHelper)) + { + return; + } var mainBuilder = parameters.MainBuilder; var constructor = converter.GetType().GetDeclaredConstructor([typeof(JsonValueReaderWriter)]); @@ -381,10 +384,15 @@ public static void Create( if (constructor == null || jsonReaderWriterProperty == null) { + var missingUnsafeAccessors = new HashSet(); mainBuilder .AppendLines( codeHelper.Expression(converter.ConstructorExpressionWithoutMappingHints, parameters.Namespaces, missingUnsafeAccessors), skipFinalNewline: true); + + + Check.DebugAssert( + missingUnsafeAccessors.Count == 0, "Generated unsafe accessors not handled: " + string.Join(Environment.NewLine, missingUnsafeAccessors)); } else { @@ -403,9 +411,31 @@ public static void Create( mainBuilder .Append(")"); } + } + + private static bool TryCreateInstanceConverter( + ValueConverter converter, + CSharpRuntimeAnnotationCodeGeneratorParameters parameters, + ICSharpHelper codeHelper) + { + // Built-in value converters expose a cached singleton via a public static Instance property. When the model uses that + // singleton, the generated code can simply reference it instead of reconstructing the converter from its expressions. + var converterType = converter.GetType(); + var instanceProperty = converterType.GetProperty( + "Instance", BindingFlags.Public | BindingFlags.Static); + if (instanceProperty == null + || !converterType.IsAssignableFrom(instanceProperty.PropertyType) + || !ReferenceEquals(converter, instanceProperty.GetValue(null))) + { + return false; + } + + AddNamespace(converterType, parameters.Namespaces); + parameters.MainBuilder + .Append(codeHelper.Reference(converterType)) + .Append(".Instance"); - Check.DebugAssert( - missingUnsafeAccessors.Count == 0, "Generated unsafe accessors not handled: " + string.Join(Environment.NewLine, missingUnsafeAccessors)); + return true; } /// @@ -423,6 +453,11 @@ public static void Create( CSharpRuntimeAnnotationCodeGeneratorParameters parameters, ICSharpHelper codeHelper) { + if (TryCreateDefaultComparer(comparer, parameters, codeHelper)) + { + return; + } + var mainBuilder = parameters.MainBuilder; var comparerType = comparer.GetType(); @@ -479,6 +514,46 @@ public static void Create( } } + private static bool TryCreateDefaultComparer( + ValueComparer comparer, + CSharpRuntimeAnnotationCodeGeneratorParameters parameters, + ICSharpHelper codeHelper) + { + var comparerType = comparer.GetType(); + var defaultProperty = comparerType.GetProperty( + nameof(ValueComparer.Default), BindingFlags.Public | BindingFlags.Static); + var structuralProperty = comparerType.GetProperty( + nameof(ValueComparer.DefaultWithStructuralComparisons), BindingFlags.Public | BindingFlags.Static); + + if (defaultProperty == null || structuralProperty == null) + { + return false; + } + + PropertyInfo defaultComparerProperty; + if (ReferenceEquals(comparer, defaultProperty.GetValue(null))) + { + defaultComparerProperty = defaultProperty; + } + else if (ReferenceEquals(comparer, structuralProperty.GetValue(null))) + { + defaultComparerProperty = structuralProperty; + } + else + { + return false; + } + + var declaringType = defaultComparerProperty.DeclaringType!; + AddNamespace(declaringType, parameters.Namespaces); + parameters.MainBuilder + .Append(codeHelper.Reference(declaringType)) + .Append('.') + .Append(defaultComparerProperty.Name); + + return true; + } + /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in @@ -574,10 +649,7 @@ public static void CreateJsonValueReaderWriter( /// public virtual bool Create( CoreTypeMapping typeMapping, - CSharpRuntimeAnnotationCodeGeneratorParameters parameters, - ValueComparer? valueComparer = null, - ValueComparer? keyValueComparer = null, - ValueComparer? providerValueComparer = null) + CSharpRuntimeAnnotationCodeGeneratorParameters parameters) { var mainBuilder = parameters.MainBuilder; var code = Dependencies.CSharpHelper; @@ -591,50 +663,27 @@ public virtual bool Create( .AppendLine(".Clone(") .IncrementIndent(); - mainBuilder - .Append("comparer: "); - Create(valueComparer ?? typeMapping.Comparer, parameters, code); - - mainBuilder.AppendLine(",") - .Append("keyComparer: "); - Create(keyValueComparer ?? typeMapping.KeyComparer, parameters, code); - - mainBuilder.AppendLine(",") - .Append("providerValueComparer: "); - Create(providerValueComparer ?? typeMapping.ProviderValueComparer, parameters, code); + var firstArgument = true; + CreateComparers(typeMapping, parameters, code, ref firstArgument); if (typeMapping.Converter != null && typeMapping.Converter != defaultInstance.Converter) { - mainBuilder.AppendLine(",") - .Append("converter: "); - + AppendArgument("converter", parameters, ref firstArgument); Create(typeMapping.Converter, parameters, code); } - var typeDifferent = typeMapping.Converter == null - && typeMapping.ClrType != defaultInstance.ClrType; - if (typeDifferent) - { - mainBuilder.AppendLine(",") - .Append($"clrType: {code.Literal(typeMapping.ClrType)}"); - } - if (typeMapping.JsonValueReaderWriter != null && typeMapping.JsonValueReaderWriter != defaultInstance.JsonValueReaderWriter) { - mainBuilder.AppendLine(",") - .Append("jsonValueReaderWriter: "); - + AppendArgument("jsonValueReaderWriter", parameters, ref firstArgument); CreateJsonValueReaderWriter(typeMapping.JsonValueReaderWriter, parameters, code); } if (typeMapping.ElementTypeMapping != null && typeMapping.ElementTypeMapping != defaultInstance.ElementTypeMapping) { - mainBuilder.AppendLine(",") - .Append("elementMapping: "); - + AppendArgument("elementMapping", parameters, ref firstArgument); Create(typeMapping.ElementTypeMapping, parameters); } @@ -645,6 +694,87 @@ public virtual bool Create( return true; } + /// + /// Writes the name of an argument in a type mapping Clone call, prefixing it with a separator unless it is the first one. + /// + /// The argument name. + /// Additional parameters used during code generation. + /// Whether this is the first argument in the argument list. Set to on return. + protected static void AppendArgument( + string name, + CSharpRuntimeAnnotationCodeGeneratorParameters parameters, + ref bool firstArgument) + { + if (!firstArgument) + { + parameters.MainBuilder.AppendLine(","); + } + + firstArgument = false; + parameters.MainBuilder.Append(name).Append(": "); + } + + /// + /// Generates code for the comparer, key comparer and provider value comparer arguments of a type mapping + /// Clone call, unless they can be omitted because they are the defaults for the mapping's CLR type. + /// + /// The type mapping being generated. + /// Additional parameters used during code generation. + /// The C# helper. + /// Whether the next argument to be written is the first one in the argument list. + protected virtual void CreateComparers( + CoreTypeMapping typeMapping, + CSharpRuntimeAnnotationCodeGeneratorParameters parameters, + ICSharpHelper codeHelper, + ref bool firstArgument) + { + if (!(typeMapping.HasDefaultComparers && DefaultComparersAreAotSafe(typeMapping))) + { + var comparerBuilder = new IndentedStringBuilder(); + Create(typeMapping.Comparer, parameters with { MainBuilder = comparerBuilder }, codeHelper); + var comparerCode = comparerBuilder.ToString(); + + AppendArgument("comparer", parameters, ref firstArgument); + parameters.MainBuilder.AppendLines(comparerCode, skipFinalNewline: true); + + // The key comparer only needs to be generated when it differs from the value comparer. + if (!ReferenceEquals(typeMapping.Comparer, typeMapping.KeyComparer)) + { + var keyComparerBuilder = new IndentedStringBuilder(); + Create(typeMapping.KeyComparer, parameters with { MainBuilder = keyComparerBuilder }, codeHelper); + var keyComparerCode = keyComparerBuilder.ToString(); + + if (keyComparerCode != comparerCode) + { + AppendArgument("keyComparer", parameters, ref firstArgument); + parameters.MainBuilder.AppendLines(keyComparerCode, skipFinalNewline: true); + } + } + } + + // The default provider value comparer is created reflectively when the mapping has a converter, so it must always be baked into + // the compiled model to remain NativeAOT-compatible. Without a converter it is the same as the key comparer, so it can be omitted + // whenever the key comparer is. + if (typeMapping.Converter is not null) + { + AppendArgument("providerValueComparer", parameters, ref firstArgument); + Create(typeMapping.ProviderValueComparer, parameters, codeHelper); + } + } + + private static bool DefaultComparersAreAotSafe(CoreTypeMapping typeMapping) + { + // The default comparers are reconstructed at runtime without reflection only when the mapping (or one of its base types) + // overrides CreateDefaultComparer as a generic type whose type argument matches the mapping's CLR type + // (e.g. RelationalTypeMapping, InMemoryTypeMapping). + var declaringType = typeMapping.GetType() + .GetMethod("CreateDefaultComparer", BindingFlags.Instance | BindingFlags.NonPublic) + ?.DeclaringType; + + return declaringType is { IsGenericType: true } + && declaringType.GetGenericArguments()[0] == typeMapping.ClrType; + } + /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in diff --git a/src/EFCore/Design/Internal/ICSharpRuntimeAnnotationCodeGenerator.cs b/src/EFCore/Design/Internal/ICSharpRuntimeAnnotationCodeGenerator.cs index 66f5a7b630b..8c995139e96 100644 --- a/src/EFCore/Design/Internal/ICSharpRuntimeAnnotationCodeGenerator.cs +++ b/src/EFCore/Design/Internal/ICSharpRuntimeAnnotationCodeGenerator.cs @@ -128,15 +128,9 @@ bool Create( /// /// The type mapping to create. /// Additional parameters used during code generation. - /// The value comparer that should be used instead of the one in the type mapping. - /// The key value comparer that should be used instead of the one in the type mapping. - /// The provider value comparer that should be used instead of the one in the type mapping. bool Create( CoreTypeMapping typeMapping, - CSharpRuntimeAnnotationCodeGeneratorParameters parameters, - ValueComparer? valueComparer = null, - ValueComparer? keyValueComparer = null, - ValueComparer? providerValueComparer = null); + CSharpRuntimeAnnotationCodeGeneratorParameters parameters); /// /// Generates code to create the given value comparer. diff --git a/src/EFCore/EFCore.baseline.json b/src/EFCore/EFCore.baseline.json index 4fa5cd2b2a6..6a2dfa39277 100644 --- a/src/EFCore/EFCore.baseline.json +++ b/src/EFCore/EFCore.baseline.json @@ -413,6 +413,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.BoolToStringConverter Instance { get; }" } ] }, @@ -437,6 +440,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.BoolToZeroOneConverter Instance { get; }" } ] }, @@ -453,6 +459,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.BytesToStringConverter Instance { get; }" } ] }, @@ -553,6 +562,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.CastingConverter Instance { get; }" } ] }, @@ -715,6 +727,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.CharToStringConverter Instance { get; }" } ] }, @@ -4972,7 +4987,10 @@ "Member": "abstract Microsoft.EntityFrameworkCore.Storage.CoreTypeMapping Clone(Microsoft.EntityFrameworkCore.Storage.CoreTypeMapping.CoreTypeMappingParameters parameters);" }, { - "Member": "virtual Microsoft.EntityFrameworkCore.Storage.CoreTypeMapping Clone(in Microsoft.EntityFrameworkCore.Storage.TypeMappingInfo? mappingInfo = null, System.Type? clrType = null, Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter? converter = null, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer? comparer = null, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer? keyComparer = null, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer? providerValueComparer = null, Microsoft.EntityFrameworkCore.Storage.CoreTypeMapping? elementMapping = null, Microsoft.EntityFrameworkCore.Storage.Json.JsonValueReaderWriter? jsonValueReaderWriter = null);" + "Member": "virtual Microsoft.EntityFrameworkCore.Storage.CoreTypeMapping Clone(in Microsoft.EntityFrameworkCore.Storage.TypeMappingInfo? mappingInfo = null, Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter? converter = null, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer? comparer = null, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer? keyComparer = null, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer? providerValueComparer = null, Microsoft.EntityFrameworkCore.Storage.CoreTypeMapping? elementMapping = null, Microsoft.EntityFrameworkCore.Storage.Json.JsonValueReaderWriter? jsonValueReaderWriter = null);" + }, + { + "Member": "virtual Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer CreateDefaultComparer(bool favorStructuralComparisons);" }, { "Member": "virtual System.Linq.Expressions.Expression GenerateCodeLiteral(object value);" @@ -5066,6 +5084,17 @@ } ] }, + { + "Type": "abstract class Microsoft.EntityFrameworkCore.Storage.CoreTypeMapping<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)] T> : Microsoft.EntityFrameworkCore.Storage.CoreTypeMapping", + "Methods": [ + { + "Member": "CoreTypeMapping(Microsoft.EntityFrameworkCore.Storage.CoreTypeMapping.CoreTypeMappingParameters parameters);" + }, + { + "Member": "override Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer CreateDefaultComparer(bool favorStructuralComparisons);" + } + ] + }, { "Type": "abstract class Microsoft.EntityFrameworkCore.Storage.Database : Microsoft.EntityFrameworkCore.Storage.IDatabase", "Methods": [ @@ -5288,6 +5317,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.DateOnlyToStringConverter Instance { get; }" } ] }, @@ -5304,6 +5336,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.DateTimeOffsetToBinaryConverter Instance { get; }" } ] }, @@ -5320,6 +5355,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.DateTimeOffsetToBytesConverter Instance { get; }" } ] }, @@ -5336,6 +5374,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.DateTimeOffsetToStringConverter Instance { get; }" } ] }, @@ -5352,6 +5393,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.DateTimeToBinaryConverter Instance { get; }" } ] }, @@ -5368,6 +5412,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.DateTimeToStringConverter Instance { get; }" } ] }, @@ -8470,6 +8517,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.EnumToNumberConverter Instance { get; }" } ] }, @@ -8486,6 +8536,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.EnumToStringConverter Instance { get; }" } ] }, @@ -9395,6 +9448,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.GuidToBytesConverter Instance { get; }" } ] }, @@ -9411,6 +9467,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.GuidToStringConverter Instance { get; }" } ] }, @@ -15027,6 +15086,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.IPAddressToBytesConverter Instance { get; }" } ] }, @@ -15043,6 +15105,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.IPAddressToStringConverter Instance { get; }" } ] }, @@ -19437,6 +19502,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.NumberToBytesConverter Instance { get; }" } ] }, @@ -19453,6 +19521,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.NumberToStringConverter Instance { get; }" } ] }, @@ -20003,6 +20074,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.PhysicalAddressToBytesConverter Instance { get; }" } ] }, @@ -20019,6 +20093,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.PhysicalAddressToStringConverter Instance { get; }" } ] }, @@ -23842,6 +23919,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.StringToBoolConverter Instance { get; }" } ] }, @@ -23855,6 +23935,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.StringToBytesConverter Instance { get; }" } ] }, @@ -23871,6 +23954,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.StringToCharConverter Instance { get; }" } ] }, @@ -23903,6 +23989,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.StringToDateTimeConverter Instance { get; }" } ] }, @@ -23919,6 +24008,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.StringToDateTimeOffsetConverter Instance { get; }" } ] }, @@ -23935,6 +24027,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.StringToEnumConverter Instance { get; }" } ] }, @@ -23951,6 +24046,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.StringToGuidConverter Instance { get; }" } ] }, @@ -23967,6 +24065,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.StringToNumberConverter Instance { get; }" } ] }, @@ -23983,6 +24084,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.StringToTimeOnlyConverter Instance { get; }" } ] }, @@ -23999,6 +24103,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.StringToTimeSpanConverter Instance { get; }" } ] }, @@ -24015,6 +24122,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.StringToUriConverter Instance { get; }" } ] }, @@ -24172,6 +24282,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.TimeOnlyToStringConverter Instance { get; }" } ] }, @@ -24188,6 +24301,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.TimeOnlyToTicksConverter Instance { get; }" } ] }, @@ -24204,6 +24320,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.TimeSpanToStringConverter Instance { get; }" } ] }, @@ -24220,6 +24339,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.TimeSpanToTicksConverter Instance { get; }" } ] }, @@ -24824,6 +24946,9 @@ "Properties": [ { "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverterInfo DefaultInfo { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.Storage.ValueConversion.UriToStringConverter Instance { get; }" } ] }, @@ -24995,6 +25120,12 @@ } ], "Properties": [ + { + "Member": "static Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer Default { get; }" + }, + { + "Member": "static Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer DefaultWithStructuralComparisons { get; }" + }, { "Member": "virtual System.Linq.Expressions.Expression> EqualsExpression { get; }" }, diff --git a/src/EFCore/Storage/CoreTypeMapping.cs b/src/EFCore/Storage/CoreTypeMapping.cs index 4ee4f02dba3..103162dd6ed 100644 --- a/src/EFCore/Storage/CoreTypeMapping.cs +++ b/src/EFCore/Storage/CoreTypeMapping.cs @@ -234,7 +234,7 @@ public virtual ValueComparer Comparer => NonCapturingLazyInitializer.EnsureInitialized( ref _comparer, this, - static c => ValueComparer.CreateDefault(c.ClrType, favorStructuralComparisons: false)); + static c => c.CreateDefaultComparer(favorStructuralComparisons: false)); /// /// A adds custom value comparison for use when @@ -244,7 +244,7 @@ public virtual ValueComparer KeyComparer => NonCapturingLazyInitializer.EnsureInitialized( ref _keyComparer, this, - static c => ValueComparer.CreateDefault(c.ClrType, favorStructuralComparisons: true)); + static c => c.CreateDefaultComparer(favorStructuralComparisons: true)); /// /// A for the provider CLR type values. @@ -255,7 +255,53 @@ public virtual ValueComparer ProviderValueComparer this, static c => (c.Converter?.ProviderClrType ?? c.ClrType) == c.ClrType ? c.KeyComparer - : ValueComparer.CreateDefault(c.Converter!.ProviderClrType, favorStructuralComparisons: true)); + : c.CreateDefaultProviderComparer(c.Converter!.ProviderClrType)); + + /// + /// Creates the default for the model CLR type of this mapping. + /// + /// + /// The default implementation creates the comparer reflectively, which is not compatible with NativeAOT. + /// Generic type mappings (e.g. ) override this to create the comparer + /// without reflection. + /// + /// + /// If , then EF will use if the type implements it. + /// + /// The newly created . + [UnconditionalSuppressMessage( + "AOT", "IL3050:Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling.", + Justification = "The base implementation is the reflective fallback for non-generic type mappings. Generic type mappings " + + "and compiled models avoid this path by creating the default comparer without reflection.")] + protected virtual ValueComparer CreateDefaultComparer(bool favorStructuralComparisons) + => ValueComparer.CreateDefault(ClrType, favorStructuralComparisons); + + [UnconditionalSuppressMessage( + "AOT", "IL3050:Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling.", + Justification = "The provider CLR type is not statically known, so the default provider value comparer is created " + + "reflectively. This path is not reached by compiled models, which bake in the comparer.")] + private ValueComparer CreateDefaultProviderComparer( + [DynamicallyAccessedMembers( + DynamicallyAccessedMemberTypes.PublicMethods + | DynamicallyAccessedMemberTypes.PublicProperties)] + Type providerClrType) + => ValueComparer.CreateDefault(providerClrType, favorStructuralComparisons: true); + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + /// + /// Whether this mapping was created without an explicitly-specified value comparer or key comparer, meaning both are the + /// defaults for its CLR type. Used by compiled-model generation to omit redundant comparer code. The provider value comparer + /// is handled separately because its default is not NativeAOT-compatible when a converter is present. + /// + [EntityFrameworkInternal] + public virtual bool HasDefaultComparers + => Parameters.Comparer is null + && Parameters.KeyComparer is null; /// /// Creates a copy of this mapping. @@ -285,7 +331,6 @@ public abstract CoreTypeMapping WithComposedConverter( /// Clones the type mapping to update any parameter if needed. /// /// The mapping info containing the facets to use. - /// The .NET type used in the EF model, or to leave unchanged. /// The value converter, or to leave unchanged. /// The value comparer, or to leave unchanged. /// The key value comparer, or to leave unchanged. @@ -295,7 +340,6 @@ public abstract CoreTypeMapping WithComposedConverter( /// The cloned mapping, or the original mapping if no clone was needed. public virtual CoreTypeMapping Clone( in TypeMappingInfo? mappingInfo = null, - Type? clrType = null, ValueConverter? converter = null, ValueComparer? comparer = null, ValueComparer? keyComparer = null, @@ -304,7 +348,7 @@ public virtual CoreTypeMapping Clone( JsonValueReaderWriter? jsonValueReaderWriter = null) => Clone( new CoreTypeMappingParameters( - clrType ?? Parameters.ClrType, + Parameters.ClrType, converter ?? Parameters.Converter, comparer ?? Parameters.Comparer, keyComparer ?? Parameters.KeyComparer, diff --git a/src/EFCore/Storage/CoreTypeMapping`1.cs b/src/EFCore/Storage/CoreTypeMapping`1.cs new file mode 100644 index 00000000000..8fbc910d74f --- /dev/null +++ b/src/EFCore/Storage/CoreTypeMapping`1.cs @@ -0,0 +1,37 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Microsoft.EntityFrameworkCore.Storage; + +/// +/// +/// Represents the mapping between a .NET type and a database type, where the .NET type used in the EF model +/// is statically known. +/// +/// +/// This type is typically used by database providers (and other extensions). It is generally +/// not used in application code. +/// +/// +/// The .NET type used in the EF model. +public abstract class CoreTypeMapping< + [DynamicallyAccessedMembers( + DynamicallyAccessedMemberTypes.PublicMethods + | DynamicallyAccessedMemberTypes.PublicProperties)] + T> : CoreTypeMapping +{ + /// + /// Initializes a new instance of the class. + /// + /// The parameters for this mapping. + protected CoreTypeMapping(CoreTypeMappingParameters parameters) + : base(parameters) + { + } + + /// + protected override ValueComparer CreateDefaultComparer(bool favorStructuralComparisons) + => ClrType == typeof(T) + ? ValueComparer.CreateDefault(favorStructuralComparisons) + : base.CreateDefaultComparer(favorStructuralComparisons); +} diff --git a/src/EFCore/Storage/ValueConversion/BoolToStringConverter.cs b/src/EFCore/Storage/ValueConversion/BoolToStringConverter.cs index e99e120e5b5..4635018b3f3 100644 --- a/src/EFCore/Storage/ValueConversion/BoolToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/BoolToStringConverter.cs @@ -42,6 +42,13 @@ public BoolToStringConverter( { } + private static readonly ConverterMappingHints DefaultMappingHints = new(size: 1); + + /// + /// A cached, default instance of this converter. + /// + public static BoolToStringConverter Instance { get; } = new("0", "1", DefaultMappingHints); + /// /// A for the default use of this converter. /// @@ -49,8 +56,8 @@ public BoolToStringConverter( = new( typeof(bool), typeof(string), - i => new BoolToStringConverter("0", "1", i.MappingHints), - new ConverterMappingHints(size: 1)); + i => ReferenceEquals(i.MappingHints, DefaultMappingHints) ? Instance : new BoolToStringConverter("0", "1", i.MappingHints), + DefaultMappingHints); private static Expression> FromProvider(string trueValue) { diff --git a/src/EFCore/Storage/ValueConversion/BoolToZeroOneConverter.cs b/src/EFCore/Storage/ValueConversion/BoolToZeroOneConverter.cs index a93467df96e..22dc62371ad 100644 --- a/src/EFCore/Storage/ValueConversion/BoolToZeroOneConverter.cs +++ b/src/EFCore/Storage/ValueConversion/BoolToZeroOneConverter.cs @@ -37,11 +37,17 @@ public BoolToZeroOneConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static BoolToZeroOneConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(bool), typeof(TProvider), i => new BoolToZeroOneConverter(i.MappingHints)); + = new(typeof(bool), typeof(TProvider), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new BoolToZeroOneConverter(i.MappingHints)); private static TProvider Zero() { diff --git a/src/EFCore/Storage/ValueConversion/BytesToStringConverter.cs b/src/EFCore/Storage/ValueConversion/BytesToStringConverter.cs index e3387a2a0b8..a43abd9f859 100644 --- a/src/EFCore/Storage/ValueConversion/BytesToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/BytesToStringConverter.cs @@ -40,9 +40,15 @@ public BytesToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static BytesToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(byte[]), typeof(string), i => new BytesToStringConverter(i.MappingHints)); + = new(typeof(byte[]), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new BytesToStringConverter(i.MappingHints)); } diff --git a/src/EFCore/Storage/ValueConversion/CastingConverter.cs b/src/EFCore/Storage/ValueConversion/CastingConverter.cs index 57bdfa01f1d..c041af2a95b 100644 --- a/src/EFCore/Storage/ValueConversion/CastingConverter.cs +++ b/src/EFCore/Storage/ValueConversion/CastingConverter.cs @@ -62,11 +62,18 @@ public CastingConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static CastingConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(TModel), typeof(TProvider), i => new CastingConverter(i.MappingHints), DefaultHints); + = new(typeof(TModel), typeof(TProvider), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new CastingConverter(i.MappingHints), + DefaultHints); private static Expression> Convert() { diff --git a/src/EFCore/Storage/ValueConversion/CharToStringConverter.cs b/src/EFCore/Storage/ValueConversion/CharToStringConverter.cs index 74536aa63bc..fdb99368479 100644 --- a/src/EFCore/Storage/ValueConversion/CharToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/CharToStringConverter.cs @@ -44,9 +44,16 @@ public CharToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static CharToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(char), typeof(string), i => new CharToStringConverter(i.MappingHints), DefaultHints); + = new(typeof(char), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new CharToStringConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/DateOnlyToStringConverter.cs b/src/EFCore/Storage/ValueConversion/DateOnlyToStringConverter.cs index 52107b665c5..1e9558f18e4 100644 --- a/src/EFCore/Storage/ValueConversion/DateOnlyToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/DateOnlyToStringConverter.cs @@ -42,9 +42,16 @@ public DateOnlyToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static DateOnlyToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(DateOnly), typeof(string), i => new DateOnlyToStringConverter(i.MappingHints), DefaultHints); + = new(typeof(DateOnly), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new DateOnlyToStringConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/DateTimeOffsetToBinaryConverter.cs b/src/EFCore/Storage/ValueConversion/DateTimeOffsetToBinaryConverter.cs index c0b08b634e7..2c13ec0ad02 100644 --- a/src/EFCore/Storage/ValueConversion/DateTimeOffsetToBinaryConverter.cs +++ b/src/EFCore/Storage/ValueConversion/DateTimeOffsetToBinaryConverter.cs @@ -63,9 +63,15 @@ public static DateTimeOffset ToDateTimeOffset(long v) public static long ToLong(DateTimeOffset v) => ((v.Ticks / 1000) << 11) | ((long)v.Offset.TotalMinutes & 0x7FF); + /// + /// A cached, default instance of this converter. + /// + public static DateTimeOffsetToBinaryConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(DateTimeOffset), typeof(long), i => new DateTimeOffsetToBinaryConverter(i.MappingHints)); + = new(typeof(DateTimeOffset), typeof(long), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new DateTimeOffsetToBinaryConverter(i.MappingHints)); } diff --git a/src/EFCore/Storage/ValueConversion/DateTimeOffsetToBytesConverter.cs b/src/EFCore/Storage/ValueConversion/DateTimeOffsetToBytesConverter.cs index 14519fc0d63..48963f8baf0 100644 --- a/src/EFCore/Storage/ValueConversion/DateTimeOffsetToBytesConverter.cs +++ b/src/EFCore/Storage/ValueConversion/DateTimeOffsetToBytesConverter.cs @@ -44,11 +44,18 @@ public DateTimeOffsetToBytesConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static DateTimeOffsetToBytesConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(DateTimeOffset), typeof(byte[]), i => new DateTimeOffsetToBytesConverter(i.MappingHints), DefaultHints); + = new(typeof(DateTimeOffset), typeof(byte[]), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new DateTimeOffsetToBytesConverter(i.MappingHints), + DefaultHints); /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore/Storage/ValueConversion/DateTimeOffsetToStringConverter.cs b/src/EFCore/Storage/ValueConversion/DateTimeOffsetToStringConverter.cs index 65289efb8ad..de95ddc45ea 100644 --- a/src/EFCore/Storage/ValueConversion/DateTimeOffsetToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/DateTimeOffsetToStringConverter.cs @@ -42,9 +42,16 @@ public DateTimeOffsetToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static DateTimeOffsetToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(DateTimeOffset), typeof(string), i => new DateTimeOffsetToStringConverter(i.MappingHints), DefaultHints); + = new(typeof(DateTimeOffset), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new DateTimeOffsetToStringConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/DateTimeToBinaryConverter.cs b/src/EFCore/Storage/ValueConversion/DateTimeToBinaryConverter.cs index cc394245bcd..f9103bed59a 100644 --- a/src/EFCore/Storage/ValueConversion/DateTimeToBinaryConverter.cs +++ b/src/EFCore/Storage/ValueConversion/DateTimeToBinaryConverter.cs @@ -41,9 +41,15 @@ public DateTimeToBinaryConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static DateTimeToBinaryConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(DateTime), typeof(long), i => new DateTimeToBinaryConverter(i.MappingHints)); + = new(typeof(DateTime), typeof(long), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new DateTimeToBinaryConverter(i.MappingHints)); } diff --git a/src/EFCore/Storage/ValueConversion/DateTimeToStringConverter.cs b/src/EFCore/Storage/ValueConversion/DateTimeToStringConverter.cs index 66eda827eb4..48240b055ba 100644 --- a/src/EFCore/Storage/ValueConversion/DateTimeToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/DateTimeToStringConverter.cs @@ -42,9 +42,16 @@ public DateTimeToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static DateTimeToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(DateTime), typeof(string), i => new DateTimeToStringConverter(i.MappingHints), DefaultHints); + = new(typeof(DateTime), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new DateTimeToStringConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/EnumToNumberConverter.cs b/src/EFCore/Storage/ValueConversion/EnumToNumberConverter.cs index c7c7a22cb5e..4f3bcd2ec22 100644 --- a/src/EFCore/Storage/ValueConversion/EnumToNumberConverter.cs +++ b/src/EFCore/Storage/ValueConversion/EnumToNumberConverter.cs @@ -55,11 +55,18 @@ public EnumToNumberConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static EnumToNumberConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(TEnum), typeof(TNumber), i => new EnumToNumberConverter(i.MappingHints), DefaultHints); + = new(typeof(TEnum), typeof(TNumber), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new EnumToNumberConverter(i.MappingHints), + DefaultHints); private static Expression> ToNumber() { diff --git a/src/EFCore/Storage/ValueConversion/EnumToStringConverter.cs b/src/EFCore/Storage/ValueConversion/EnumToStringConverter.cs index 5deccdbe343..03341e62516 100644 --- a/src/EFCore/Storage/ValueConversion/EnumToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/EnumToStringConverter.cs @@ -43,9 +43,15 @@ public EnumToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static EnumToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(TEnum), typeof(string), i => new EnumToStringConverter(i.MappingHints)); + = new(typeof(TEnum), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new EnumToStringConverter(i.MappingHints)); } diff --git a/src/EFCore/Storage/ValueConversion/GuidToBytesConverter.cs b/src/EFCore/Storage/ValueConversion/GuidToBytesConverter.cs index 66424a8a3e1..7c703e4ebd2 100644 --- a/src/EFCore/Storage/ValueConversion/GuidToBytesConverter.cs +++ b/src/EFCore/Storage/ValueConversion/GuidToBytesConverter.cs @@ -57,9 +57,16 @@ public GuidToBytesConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static GuidToBytesConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(Guid), typeof(byte[]), i => new GuidToBytesConverter(i.MappingHints), DefaultHints); + = new(typeof(Guid), typeof(byte[]), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new GuidToBytesConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/GuidToStringConverter.cs b/src/EFCore/Storage/ValueConversion/GuidToStringConverter.cs index 4befad0d891..e61e6671f6c 100644 --- a/src/EFCore/Storage/ValueConversion/GuidToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/GuidToStringConverter.cs @@ -43,9 +43,16 @@ public GuidToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static GuidToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(Guid), typeof(string), i => new GuidToStringConverter(i.MappingHints), DefaultHints); + = new(typeof(Guid), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new GuidToStringConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/IPAddressToBytesConverter.cs b/src/EFCore/Storage/ValueConversion/IPAddressToBytesConverter.cs index 5fba21a930f..5bc62dc99aa 100644 --- a/src/EFCore/Storage/ValueConversion/IPAddressToBytesConverter.cs +++ b/src/EFCore/Storage/ValueConversion/IPAddressToBytesConverter.cs @@ -45,9 +45,16 @@ public IPAddressToBytesConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static IPAddressToBytesConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(IPAddress), typeof(byte[]), i => new IPAddressToBytesConverter(i.MappingHints), DefaultHints); + = new(typeof(IPAddress), typeof(byte[]), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new IPAddressToBytesConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/IPAddressToStringConverter.cs b/src/EFCore/Storage/ValueConversion/IPAddressToStringConverter.cs index c3155029e68..2cf00cb9294 100644 --- a/src/EFCore/Storage/ValueConversion/IPAddressToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/IPAddressToStringConverter.cs @@ -43,11 +43,18 @@ public IPAddressToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static IPAddressToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(IPAddress), typeof(string), i => new IPAddressToStringConverter(i.MappingHints), DefaultHints); + = new(typeof(IPAddress), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new IPAddressToStringConverter(i.MappingHints), + DefaultHints); private static new Expression> ToString() => v => v!.ToString(); diff --git a/src/EFCore/Storage/ValueConversion/NumberToBytesConverter.cs b/src/EFCore/Storage/ValueConversion/NumberToBytesConverter.cs index bd8a13441c0..3b85c396b20 100644 --- a/src/EFCore/Storage/ValueConversion/NumberToBytesConverter.cs +++ b/src/EFCore/Storage/ValueConversion/NumberToBytesConverter.cs @@ -60,7 +60,9 @@ public NumberToBytesConverter(ConverterMappingHints? mappingHints) /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(TNumber), typeof(byte[]), i => new NumberToBytesConverter(i.MappingHints), DefaultHints); + = new(typeof(TNumber), typeof(byte[]), + i => ReferenceEquals(i.MappingHints, DefaultHints) ? Instance! : new NumberToBytesConverter(i.MappingHints), + DefaultHints); /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to @@ -318,4 +320,10 @@ public static decimal BytesToDecimal(byte[] bytes) (specialBits & 0x80000000) != 0, (byte)((specialBits & 0x00FF0000) >> 16)); } + + /// + /// A cached, default instance of this converter. + /// + // Declared last so that all static fields used by the constructor are initialized before the instance is created. + public static NumberToBytesConverter Instance { get; } = new(); } diff --git a/src/EFCore/Storage/ValueConversion/NumberToStringConverter.cs b/src/EFCore/Storage/ValueConversion/NumberToStringConverter.cs index 62452ddd1da..08491f20b2d 100644 --- a/src/EFCore/Storage/ValueConversion/NumberToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/NumberToStringConverter.cs @@ -42,9 +42,16 @@ public NumberToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static NumberToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(TNumber), typeof(string), i => new NumberToStringConverter(i.MappingHints), DefaultHints); + = new(typeof(TNumber), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new NumberToStringConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/PhysicalAddressToBytesConverter.cs b/src/EFCore/Storage/ValueConversion/PhysicalAddressToBytesConverter.cs index 760d2d378f9..d46bac1dc4b 100644 --- a/src/EFCore/Storage/ValueConversion/PhysicalAddressToBytesConverter.cs +++ b/src/EFCore/Storage/ValueConversion/PhysicalAddressToBytesConverter.cs @@ -44,9 +44,16 @@ public PhysicalAddressToBytesConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static PhysicalAddressToBytesConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(PhysicalAddress), typeof(byte[]), i => new PhysicalAddressToBytesConverter(i.MappingHints), DefaultHints); + = new(typeof(PhysicalAddress), typeof(byte[]), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new PhysicalAddressToBytesConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/PhysicalAddressToStringConverter.cs b/src/EFCore/Storage/ValueConversion/PhysicalAddressToStringConverter.cs index 582e4d2f241..656daf75d48 100644 --- a/src/EFCore/Storage/ValueConversion/PhysicalAddressToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/PhysicalAddressToStringConverter.cs @@ -44,11 +44,18 @@ public PhysicalAddressToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static PhysicalAddressToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(PhysicalAddress), typeof(string), i => new PhysicalAddressToStringConverter(i.MappingHints), DefaultHints); + = new(typeof(PhysicalAddress), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new PhysicalAddressToStringConverter(i.MappingHints), + DefaultHints); private static new Expression> ToString() => v => v!.ToString(); diff --git a/src/EFCore/Storage/ValueConversion/StringToBoolConverter.cs b/src/EFCore/Storage/ValueConversion/StringToBoolConverter.cs index 494d0cc6ac6..bc82a13a877 100644 --- a/src/EFCore/Storage/ValueConversion/StringToBoolConverter.cs +++ b/src/EFCore/Storage/ValueConversion/StringToBoolConverter.cs @@ -40,9 +40,15 @@ public StringToBoolConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static StringToBoolConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(string), typeof(bool), i => new StringToBoolConverter(i.MappingHints)); + = new(typeof(string), typeof(bool), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new StringToBoolConverter(i.MappingHints)); } diff --git a/src/EFCore/Storage/ValueConversion/StringToBytesConverter.cs b/src/EFCore/Storage/ValueConversion/StringToBytesConverter.cs index 574467b222f..2dcd25db349 100644 --- a/src/EFCore/Storage/ValueConversion/StringToBytesConverter.cs +++ b/src/EFCore/Storage/ValueConversion/StringToBytesConverter.cs @@ -43,11 +43,17 @@ public StringToBytesConverter( { } + /// + /// A cached, default instance of this converter. + /// + public static StringToBytesConverter Instance { get; } = new(Encoding.UTF8); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(string), typeof(byte[]), i => new StringToBytesConverter(Encoding.UTF8, i.MappingHints)); + = new(typeof(string), typeof(byte[]), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new StringToBytesConverter(Encoding.UTF8, i.MappingHints)); private static Expression> FromProvider(Encoding encoding) { diff --git a/src/EFCore/Storage/ValueConversion/StringToCharConverter.cs b/src/EFCore/Storage/ValueConversion/StringToCharConverter.cs index ffd55d99ebe..89c4f5b50bb 100644 --- a/src/EFCore/Storage/ValueConversion/StringToCharConverter.cs +++ b/src/EFCore/Storage/ValueConversion/StringToCharConverter.cs @@ -44,9 +44,16 @@ public StringToCharConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static StringToCharConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(string), typeof(char), i => new StringToCharConverter(i.MappingHints), DefaultHints); + = new(typeof(string), typeof(char), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new StringToCharConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/StringToDateTimeConverter.cs b/src/EFCore/Storage/ValueConversion/StringToDateTimeConverter.cs index 092ddeed4aa..bd56c3af31f 100644 --- a/src/EFCore/Storage/ValueConversion/StringToDateTimeConverter.cs +++ b/src/EFCore/Storage/ValueConversion/StringToDateTimeConverter.cs @@ -42,9 +42,16 @@ public StringToDateTimeConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static StringToDateTimeConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(string), typeof(DateTime), i => new StringToDateTimeConverter(i.MappingHints), DefaultHints); + = new(typeof(string), typeof(DateTime), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new StringToDateTimeConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/StringToDateTimeOffsetConverter.cs b/src/EFCore/Storage/ValueConversion/StringToDateTimeOffsetConverter.cs index 5848e3c3242..afc207acccb 100644 --- a/src/EFCore/Storage/ValueConversion/StringToDateTimeOffsetConverter.cs +++ b/src/EFCore/Storage/ValueConversion/StringToDateTimeOffsetConverter.cs @@ -42,9 +42,16 @@ public StringToDateTimeOffsetConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static StringToDateTimeOffsetConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(string), typeof(DateTimeOffset), i => new StringToDateTimeOffsetConverter(i.MappingHints), DefaultHints); + = new(typeof(string), typeof(DateTimeOffset), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new StringToDateTimeOffsetConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/StringToEnumConverter.cs b/src/EFCore/Storage/ValueConversion/StringToEnumConverter.cs index 2761f19bced..d893925e3a2 100644 --- a/src/EFCore/Storage/ValueConversion/StringToEnumConverter.cs +++ b/src/EFCore/Storage/ValueConversion/StringToEnumConverter.cs @@ -43,9 +43,15 @@ public StringToEnumConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static StringToEnumConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(string), typeof(TEnum), i => new StringToEnumConverter(i.MappingHints)); + = new(typeof(string), typeof(TEnum), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new StringToEnumConverter(i.MappingHints)); } diff --git a/src/EFCore/Storage/ValueConversion/StringToGuidConverter.cs b/src/EFCore/Storage/ValueConversion/StringToGuidConverter.cs index 7c4a65c191f..243b1f2b89b 100644 --- a/src/EFCore/Storage/ValueConversion/StringToGuidConverter.cs +++ b/src/EFCore/Storage/ValueConversion/StringToGuidConverter.cs @@ -43,9 +43,16 @@ public StringToGuidConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static StringToGuidConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(string), typeof(Guid), i => new StringToGuidConverter(i.MappingHints), DefaultHints); + = new(typeof(string), typeof(Guid), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new StringToGuidConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/StringToNumberConverter.cs b/src/EFCore/Storage/ValueConversion/StringToNumberConverter.cs index 23eb62a2a59..753ca35face 100644 --- a/src/EFCore/Storage/ValueConversion/StringToNumberConverter.cs +++ b/src/EFCore/Storage/ValueConversion/StringToNumberConverter.cs @@ -42,9 +42,16 @@ public StringToNumberConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static StringToNumberConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(string), typeof(TNumber), i => new StringToNumberConverter(i.MappingHints), DefaultHints); + = new(typeof(string), typeof(TNumber), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new StringToNumberConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/StringToTimeOnlyConverter.cs b/src/EFCore/Storage/ValueConversion/StringToTimeOnlyConverter.cs index 8fd954a5f2b..80b6a305441 100644 --- a/src/EFCore/Storage/ValueConversion/StringToTimeOnlyConverter.cs +++ b/src/EFCore/Storage/ValueConversion/StringToTimeOnlyConverter.cs @@ -42,9 +42,16 @@ public StringToTimeOnlyConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static StringToTimeOnlyConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(string), typeof(TimeOnly), i => new StringToTimeOnlyConverter(i.MappingHints), DefaultHints); + = new(typeof(string), typeof(TimeOnly), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new StringToTimeOnlyConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/StringToTimeSpanConverter.cs b/src/EFCore/Storage/ValueConversion/StringToTimeSpanConverter.cs index d760a112b06..b0484938fa3 100644 --- a/src/EFCore/Storage/ValueConversion/StringToTimeSpanConverter.cs +++ b/src/EFCore/Storage/ValueConversion/StringToTimeSpanConverter.cs @@ -42,9 +42,16 @@ public StringToTimeSpanConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static StringToTimeSpanConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(string), typeof(TimeSpan), i => new StringToTimeSpanConverter(i.MappingHints), DefaultHints); + = new(typeof(string), typeof(TimeSpan), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new StringToTimeSpanConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/StringToUriConverter.cs b/src/EFCore/Storage/ValueConversion/StringToUriConverter.cs index 72283c59775..580c21a04d6 100644 --- a/src/EFCore/Storage/ValueConversion/StringToUriConverter.cs +++ b/src/EFCore/Storage/ValueConversion/StringToUriConverter.cs @@ -42,9 +42,15 @@ public StringToUriConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static StringToUriConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(string), typeof(Uri), i => new StringToUriConverter(i.MappingHints)); + = new(typeof(string), typeof(Uri), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new StringToUriConverter(i.MappingHints)); } diff --git a/src/EFCore/Storage/ValueConversion/TimeOnlyToStringConverter.cs b/src/EFCore/Storage/ValueConversion/TimeOnlyToStringConverter.cs index 676e48195dd..750a1ec7503 100644 --- a/src/EFCore/Storage/ValueConversion/TimeOnlyToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/TimeOnlyToStringConverter.cs @@ -42,9 +42,16 @@ public TimeOnlyToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static TimeOnlyToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(TimeOnly), typeof(string), i => new TimeOnlyToStringConverter(i.MappingHints), DefaultHints); + = new(typeof(TimeOnly), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new TimeOnlyToStringConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/TimeOnlyToTicksConverter.cs b/src/EFCore/Storage/ValueConversion/TimeOnlyToTicksConverter.cs index 8ad9991ab75..efae9b1bb1e 100644 --- a/src/EFCore/Storage/ValueConversion/TimeOnlyToTicksConverter.cs +++ b/src/EFCore/Storage/ValueConversion/TimeOnlyToTicksConverter.cs @@ -37,9 +37,15 @@ public TimeOnlyToTicksConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static TimeOnlyToTicksConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(TimeOnly), typeof(long), i => new TimeOnlyToTicksConverter(i.MappingHints)); + = new(typeof(TimeOnly), typeof(long), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new TimeOnlyToTicksConverter(i.MappingHints)); } diff --git a/src/EFCore/Storage/ValueConversion/TimeSpanToStringConverter.cs b/src/EFCore/Storage/ValueConversion/TimeSpanToStringConverter.cs index d5c0081a79f..b14b4e4b654 100644 --- a/src/EFCore/Storage/ValueConversion/TimeSpanToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/TimeSpanToStringConverter.cs @@ -42,9 +42,16 @@ public TimeSpanToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static TimeSpanToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(TimeSpan), typeof(string), i => new TimeSpanToStringConverter(i.MappingHints), DefaultHints); + = new(typeof(TimeSpan), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new TimeSpanToStringConverter(i.MappingHints), + DefaultHints); } diff --git a/src/EFCore/Storage/ValueConversion/TimeSpanToTicksConverter.cs b/src/EFCore/Storage/ValueConversion/TimeSpanToTicksConverter.cs index 907ac75f9d1..405458d6482 100644 --- a/src/EFCore/Storage/ValueConversion/TimeSpanToTicksConverter.cs +++ b/src/EFCore/Storage/ValueConversion/TimeSpanToTicksConverter.cs @@ -37,9 +37,15 @@ public TimeSpanToTicksConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static TimeSpanToTicksConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(TimeSpan), typeof(long), i => new TimeSpanToTicksConverter(i.MappingHints)); + = new(typeof(TimeSpan), typeof(long), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new TimeSpanToTicksConverter(i.MappingHints)); } diff --git a/src/EFCore/Storage/ValueConversion/UriToStringConverter.cs b/src/EFCore/Storage/ValueConversion/UriToStringConverter.cs index dcd6887a5f9..53e498168b7 100644 --- a/src/EFCore/Storage/ValueConversion/UriToStringConverter.cs +++ b/src/EFCore/Storage/ValueConversion/UriToStringConverter.cs @@ -42,9 +42,15 @@ public UriToStringConverter(ConverterMappingHints? mappingHints) { } + /// + /// A cached, default instance of this converter. + /// + public static UriToStringConverter Instance { get; } = new(); + /// /// A for the default use of this converter. /// public static ValueConverterInfo DefaultInfo { get; } - = new(typeof(Uri), typeof(string), i => new UriToStringConverter(i.MappingHints)); + = new(typeof(Uri), typeof(string), + i => ReferenceEquals(i.MappingHints, Instance.MappingHints) ? Instance : new UriToStringConverter(i.MappingHints)); } diff --git a/test/EFCore.Cosmos.FunctionalTests/Query/PrimitiveCollectionsQueryCosmosTest.cs b/test/EFCore.Cosmos.FunctionalTests/Query/PrimitiveCollectionsQueryCosmosTest.cs index 47b3aa545ce..5d9f4ca3e05 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Query/PrimitiveCollectionsQueryCosmosTest.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Query/PrimitiveCollectionsQueryCosmosTest.cs @@ -1059,8 +1059,8 @@ public override Task Parameter_collection_Count_with_huge_number_of_values_over_ => base.Parameter_collection_Count_with_huge_number_of_values_over_5_operations_same_parameter(); // nothing to test here - public override Task Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping() - => base.Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping(); + public override Task Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_property() + => base.Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_property(); // nothing to test here public override Task Parameter_collection_Count_with_huge_number_of_values_over_5_operations_mixed_parameters_constants() @@ -1079,8 +1079,8 @@ public override Task Parameter_collection_of_ints_Contains_int_with_huge_number_ => base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_5_operations_same_parameter(); // nothing to test here - public override Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping() - => base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping(); + public override Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_property() + => base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_property(); // nothing to test here public override Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_5_operations_forced_constants() diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/Basic_cosmos_model/DataEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/Basic_cosmos_model/DataEntityType.cs index 4cd8158b352..2ee3232b9cb 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/Basic_cosmos_model/DataEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/Basic_cosmos_model/DataEntityType.cs @@ -1,9 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Globalization; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -51,20 +48,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -84,26 +68,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: 1, storeGenerationIndex: -1); - partitionId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (long v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), long (string v) => long.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), + partitionId.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: NumberToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (long v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), long (string v) => long.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); + NumberToStringConverter.Instance)); partitionId.SetCurrentValueComparer(new EntryCurrentValueComparer(partitionId)); partitionId.SetComparer(new NullableValueComparer(partitionId.TypeMapping.Comparer)); - partitionId.SetKeyComparer(new NullableValueComparer(partitionId.TypeMapping.KeyComparer)); var blob = runtimeEntityType.AddProperty( "Blob", @@ -137,23 +110,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - blob.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (byte[] v) => Convert.ToBase64String(v), byte[] (string v) => Convert.FromBase64String(v)), + blob.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + keyComparer: ValueComparer.DefaultWithStructuralComparisons, + providerValueComparer: DefaultValueComparer.Default, + converter: BytesToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (byte[] v) => Convert.ToBase64String(v), byte[] (string v) => Convert.FromBase64String(v)))); + BytesToStringConverter.Instance)); blob.AddAnnotation("Cosmos:PropertyName", "JsonBlob"); var bytes = runtimeEntityType.AddProperty( @@ -170,19 +134,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: -1, storeGenerationIndex: -1); - bytes.TypeMapping = CosmosTypeMapping.Default.Clone( + bytes.TypeMapping = CosmosTypeMapping>.Default.Clone( comparer: new ValueComparer>( bool (ReadOnlyMemory v1, ReadOnlyMemory v2) => v1.Equals(v2), int (ReadOnlyMemory v) => ((object)v).GetHashCode(), ReadOnlyMemory (ReadOnlyMemory v) => v), - keyComparer: new ValueComparer>( - bool (ReadOnlyMemory v1, ReadOnlyMemory v2) => v1.Equals(v2), - int (ReadOnlyMemory v) => ((object)v).GetHashCode(), - ReadOnlyMemory (ReadOnlyMemory v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + keyComparer: ValueComparer>.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, converter: new ValueConverter, byte[]>(byte[] (ReadOnlyMemory v) => ReadOnlyMemoryConverter.ToArray(v), ReadOnlyMemory (byte[] v) => ReadOnlyMemoryConverter.ToMemory(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter, IEnumerable>( new JsonCollectionOfStructsReaderWriter( @@ -205,37 +163,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 3, relationshipIndex: -1, storeGenerationIndex: -1); - list.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer>, Dictionary>(new ConvertingValueComparer, object>(new StringDictionaryComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)))), - keyComparer: new ValueComparer>>( - bool (List> v1, List> v2) => object.Equals(v1, v2), - int (List> v) => ((object)v).GetHashCode(), - List> (List> v) => v), - providerValueComparer: new ValueComparer>>( - bool (List> v1, List> v2) => object.Equals(v1, v2), - int (List> v) => ((object)v).GetHashCode(), - List> (List> v) => v), - clrType: typeof(List>), + list.TypeMapping = CosmosTypeMapping>>.Default.Clone( + comparer: new ListOfReferenceTypesComparer>, Dictionary>(new ConvertingValueComparer, object>(new StringDictionaryComparer, int>(DefaultValueComparer.Default))), + keyComparer: ValueComparer>>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter>, Dictionary>( new CosmosTypeMappingSource.CosmosJsonStringKeyedDictionaryReaderWriter( JsonInt32ReaderWriter.Instance)), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new StringDictionaryComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ValueComparer>( - bool (Dictionary v1, Dictionary v2) => object.Equals(v1, v2), - int (Dictionary v) => ((object)v).GetHashCode(), - Dictionary (Dictionary v) => v), - providerValueComparer: new ValueComparer>( - bool (Dictionary v1, Dictionary v2) => object.Equals(v1, v2), - int (Dictionary v) => ((object)v).GetHashCode(), - Dictionary (Dictionary v) => v), - clrType: typeof(Dictionary), + elementMapping: CosmosTypeMapping>.Default.Clone( + comparer: new StringDictionaryComparer, int>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new CosmosTypeMappingSource.CosmosJsonStringKeyedDictionaryReaderWriter( JsonInt32ReaderWriter.Instance))); var listElementType = list.SetElementType(typeof(Dictionary), @@ -257,20 +193,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 4, relationshipIndex: -1, storeGenerationIndex: -1); - map.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new StringDictionaryComparer, string[]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)))), - keyComparer: new ValueComparer>( - bool (Dictionary v1, Dictionary v2) => object.Equals(v1, v2), - int (Dictionary v) => ((object)v).GetHashCode(), - Dictionary (Dictionary v) => v), - providerValueComparer: new ValueComparer>( - bool (Dictionary v1, Dictionary v2) => object.Equals(v1, v2), - int (Dictionary v) => ((object)v).GetHashCode(), - Dictionary (Dictionary v) => v), - clrType: typeof(Dictionary), + map.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new StringDictionaryComparer, string[]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(DefaultValueComparer.Default))), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new CosmosTypeMappingSource.CosmosJsonStringKeyedDictionaryReferenceCollectionValueReaderWriter( new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance))); @@ -291,20 +216,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 5, relationshipIndex: -1, storeGenerationIndex: -1); - __id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + __id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); __id.AddAnnotation("Cosmos:PropertyName", "id"); @@ -326,20 +238,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 6, relationshipIndex: -1, storeGenerationIndex: 0); - __jObject.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - keyComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - providerValueComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - clrType: typeof(JObject)); + __jObject.TypeMapping = CosmosTypeMapping.Default; __jObject.AddAnnotation("Cosmos:PropertyName", ""); var _etag = runtimeEntityType.AddProperty( @@ -361,20 +260,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 7, relationshipIndex: -1, storeGenerationIndex: 1); - _etag.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + _etag.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var key = runtimeEntityType.AddKey( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs index 6bc95d31d2a..eb7b4f851cb 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs @@ -55,20 +55,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - principalId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + principalId.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); @@ -87,27 +74,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: 1, storeGenerationIndex: 1); - principalAlternateId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)), + principalAlternateId.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: GuidToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)))); + GuidToStringConverter.Instance)); principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); principalAlternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); @@ -127,27 +100,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: -1, storeGenerationIndex: -1); - enumDiscriminator.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (CompiledModelTestBase.Enum1 value) => ((int)value), - CompiledModelTestBase.Enum1 (int value) => ((CompiledModelTestBase.Enum1)value)), + enumDiscriminator.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (CompiledModelTestBase.Enum1 value) => ((int)value), - CompiledModelTestBase.Enum1 (int value) => ((CompiledModelTestBase.Enum1)value)))); + EnumToNumberConverter.Instance)); enumDiscriminator.SetSentinelFromProviderValue(0); var id = runtimeEntityType.AddProperty( @@ -182,23 +141,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var __id = runtimeEntityType.AddProperty( "__id", @@ -216,20 +161,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 3, relationshipIndex: -1, storeGenerationIndex: -1); - __id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + __id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); __id.AddAnnotation("Cosmos:PropertyName", "id"); @@ -248,20 +180,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 4, relationshipIndex: -1, storeGenerationIndex: -1); - __jObject.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - keyComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - providerValueComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - clrType: typeof(JObject)); + __jObject.TypeMapping = CosmosTypeMapping.Default; __jObject.AddAnnotation("Cosmos:PropertyName", ""); var key = runtimeEntityType.AddKey( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs index 432a41be791..b982f9a2456 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs @@ -65,20 +65,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - data.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + data.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var money = runtimeEntityType.AddProperty( @@ -98,20 +85,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 5, relationshipIndex: -1, storeGenerationIndex: -1); - money.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - clrType: typeof(decimal), + money.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDecimalReaderWriter.Instance); return runtimeEntityType; diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs index 10f0b26b8a5..94280ae3934 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs @@ -1,9 +1,7 @@ // using System; -using System.Collections; using System.Collections.Generic; using System.Globalization; -using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Reflection; @@ -74,27 +72,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.ManyTypesId v1, CompiledModelTestBase.ManyTypesId v2) => v1.Equals(v2), - int (CompiledModelTestBase.ManyTypesId v) => ((object)v).GetHashCode(), - CompiledModelTestBase.ManyTypesId (CompiledModelTestBase.ManyTypesId v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.ManyTypesId v1, CompiledModelTestBase.ManyTypesId v2) => v1.Equals(v2), - int (CompiledModelTestBase.ManyTypesId v) => ((object)v).GetHashCode(), - CompiledModelTestBase.ManyTypesId (CompiledModelTestBase.ManyTypesId v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (CompiledModelTestBase.ManyTypesId v) => v.Id, - CompiledModelTestBase.ManyTypesId (int v) => new CompiledModelTestBase.ManyTypesId(v)), + id.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(int (CompiledModelTestBase.ManyTypesId v) => v.Id, CompiledModelTestBase.ManyTypesId (int v) => new CompiledModelTestBase.ManyTypesId(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (CompiledModelTestBase.ManyTypesId v) => v.Id, - CompiledModelTestBase.ManyTypesId (int v) => new CompiledModelTestBase.ManyTypesId(v)))); + new ValueConverter(int (CompiledModelTestBase.ManyTypesId v) => v.Id, CompiledModelTestBase.ManyTypesId (int v) => new CompiledModelTestBase.ManyTypesId(v)))); id.SetCurrentValueComparer(new CurrentProviderValueComparer(id)); id.SetSentinelFromProviderValue(0); @@ -114,20 +98,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: -1, storeGenerationIndex: -1); - type.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + type.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var @bool = runtimeEntityType.AddProperty( @@ -162,20 +133,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @bool.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + @bool.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance); var boolArray = runtimeEntityType.AddProperty( @@ -209,36 +167,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - boolArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ValueComparer( - bool (bool[] v1, bool[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (bool[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - bool[] (bool[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (bool[] v1, bool[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (bool[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - bool[] (bool[] source) => source.ToArray()), - clrType: typeof(bool[]), + boolArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance)); var boolArrayElementType = boolArray.SetElementType(typeof(bool)); boolArrayElementType.TypeMapping = boolArray.TypeMapping.ElementTypeMapping; @@ -274,53 +208,18 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - boolNestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)))), - keyComparer: new ValueComparer( - bool (bool[][] v1, bool[][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (bool[][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - bool[][] (bool[][] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (bool[][] v1, bool[][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (bool[][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - bool[][] (bool[][] source) => source.ToArray()), - clrType: typeof(bool[][]), + boolNestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance)), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ValueComparer( - bool (bool[] v1, bool[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (bool[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - bool[] (bool[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (bool[] v1, bool[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (bool[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - bool[] (bool[] source) => source.ToArray()), - clrType: typeof(bool[]), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance))); var boolNestedCollectionElementType = boolNestedCollection.SetElementType(typeof(bool[])); boolNestedCollectionElementType.TypeMapping = boolNestedCollection.TypeMapping.ElementTypeMapping; @@ -356,36 +255,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - boolReadOnlyCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, bool>(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ValueComparer>( - bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), - int (IReadOnlyCollection v) => ((object)v).GetHashCode(), - IReadOnlyCollection (IReadOnlyCollection v) => v), - providerValueComparer: new ValueComparer>( - bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), - int (IReadOnlyCollection v) => ((object)v).GetHashCode(), - IReadOnlyCollection (IReadOnlyCollection v) => v), - clrType: typeof(IReadOnlyCollection), + boolReadOnlyCollection.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, bool>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, bool>( JsonBoolReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance)); var boolReadOnlyCollectionElementType = boolReadOnlyCollection.SetElementType(typeof(bool)); boolReadOnlyCollectionElementType.TypeMapping = boolReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -421,27 +296,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - boolToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (bool v) => ((string)((v ? "B" : "A"))), - bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))), + boolToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (bool v) => ((string)((v ? "B" : "A"))), bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (bool v) => ((string)((v ? "B" : "A"))), - bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))))); + new ValueConverter(string (bool v) => ((string)((v ? "B" : "A"))), bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))))); boolToStringConverterProperty.SetSentinelFromProviderValue("A"); var boolToTwoValuesConverterProperty = runtimeEntityType.AddProperty( @@ -475,27 +336,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - boolToTwoValuesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter( - byte (bool v) => ((byte)((v ? 1 : 0))), - bool (byte v) => v == 1), + boolToTwoValuesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(byte (bool v) => ((byte)((v ? 1 : 0))), bool (byte v) => v == 1), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter( - byte (bool v) => ((byte)((v ? 1 : 0))), - bool (byte v) => v == 1))); + new ValueConverter(byte (bool v) => ((byte)((v ? 1 : 0))), bool (byte v) => v == 1))); boolToTwoValuesConverterProperty.SetSentinelFromProviderValue((byte)0); var boolToZeroOneConverterProperty = runtimeEntityType.AddProperty( @@ -530,27 +377,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - boolToZeroOneConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter( - short (bool v) => ((short)((v ? 1 : 0))), - bool (short v) => v == 1), + boolToZeroOneConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(short (bool v) => ((short)((v ? 1 : 0))), bool (short v) => v == 1), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter( - short (bool v) => ((short)((v ? 1 : 0))), - bool (short v) => v == 1))); + new ValueConverter(short (bool v) => ((short)((v ? 1 : 0))), bool (short v) => v == 1))); boolToZeroOneConverterProperty.SetSentinelFromProviderValue((short)0); var bytes = runtimeEntityType.AddProperty( @@ -584,27 +417,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - bytes.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (byte[] v) => Convert.ToBase64String(v), - byte[] (string v) => Convert.FromBase64String(v)), + bytes.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + keyComparer: ValueComparer.DefaultWithStructuralComparisons, + providerValueComparer: DefaultValueComparer.Default, + converter: BytesToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (byte[] v) => Convert.ToBase64String(v), - byte[] (string v) => Convert.FromBase64String(v)))); + BytesToStringConverter.Instance)); var bytesToStringConverterProperty = runtimeEntityType.AddProperty( "BytesToStringConverterProperty", @@ -639,27 +459,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - bytesToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (byte[] v) => Convert.ToBase64String(v), - byte[] (string v) => Convert.FromBase64String(v)), + bytesToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + keyComparer: ValueComparer.DefaultWithStructuralComparisons, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (byte[] v) => Convert.ToBase64String(v), byte[] (string v) => Convert.FromBase64String(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (byte[] v) => Convert.ToBase64String(v), - byte[] (string v) => Convert.FromBase64String(v)))); + new ValueConverter(string (byte[] v) => Convert.ToBase64String(v), byte[] (string v) => Convert.FromBase64String(v)))); var castingConverterProperty = runtimeEntityType.AddProperty( "CastingConverterProperty", @@ -693,27 +500,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - castingConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - converter: new ValueConverter( - decimal (int v) => ((decimal)v), - int (decimal v) => ((int)v)), + castingConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(decimal (int v) => ((decimal)v), int (decimal v) => ((int)v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter( - decimal (int v) => ((decimal)v), - int (decimal v) => ((int)v)))); + new ValueConverter(decimal (int v) => ((decimal)v), int (decimal v) => ((int)v)))); castingConverterProperty.SetSentinelFromProviderValue(0m); var @char = runtimeEntityType.AddProperty( @@ -748,20 +541,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @char.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - clrType: typeof(char), + @char.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonCharReaderWriter.Instance); var charArray = runtimeEntityType.AddProperty( @@ -795,36 +575,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - charArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - keyComparer: new ValueComparer( - bool (char[] v1, char[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (char[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - char[] (char[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (char[] v1, char[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (char[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - char[] (char[] source) => source.ToArray()), - clrType: typeof(char[]), + charArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - clrType: typeof(char), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonCharReaderWriter.Instance)); var charArrayElementType = charArray.SetElementType(typeof(char)); charArrayElementType.TypeMapping = charArray.TypeMapping.ElementTypeMapping; @@ -860,53 +616,18 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - charNestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)))), - keyComparer: new ValueComparer( - bool (char[][] v1, char[][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (char[][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - char[][] (char[][] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (char[][] v1, char[][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (char[][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - char[][] (char[][] source) => source.ToArray()), - clrType: typeof(char[][]), + charNestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance)), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - keyComparer: new ValueComparer( - bool (char[] v1, char[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (char[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - char[] (char[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (char[] v1, char[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (char[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - char[] (char[] source) => source.ToArray()), - clrType: typeof(char[]), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - clrType: typeof(char), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonCharReaderWriter.Instance))); var charNestedCollectionElementType = charNestedCollection.SetElementType(typeof(char[])); charNestedCollectionElementType.TypeMapping = charNestedCollection.TypeMapping.ElementTypeMapping; @@ -943,27 +664,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - charToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), - char (string v) => (v.Length < 1 ? '\0' : v[0])), + charToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), - char (string v) => (v.Length < 1 ? '\0' : v[0])))); + new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])))); charToStringConverterProperty.SetSentinelFromProviderValue("\0"); var dateOnly = runtimeEntityType.AddProperty( @@ -998,20 +705,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateOnly.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - clrType: typeof(DateOnly), + dateOnly.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateOnlyReaderWriter.Instance); var dateOnlyToStringConverterProperty = runtimeEntityType.AddProperty( @@ -1046,27 +740,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateOnlyToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd"), - DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)), + dateOnlyToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd"), DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd"), - DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)))); + new ValueConverter(string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd"), DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)))); dateOnlyToStringConverterProperty.SetSentinelFromProviderValue("0001-01-01"); var dateTime = runtimeEntityType.AddProperty( @@ -1101,20 +781,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTime.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + dateTime.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance); var dateTimeOffsetToBinaryConverterProperty = runtimeEntityType.AddProperty( @@ -1149,27 +816,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeOffsetToBinaryConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter( - long (DateTimeOffset v) => DateTimeOffsetToBinaryConverter.ToLong(v), - DateTimeOffset (long v) => DateTimeOffsetToBinaryConverter.ToDateTimeOffset(v)), + dateTimeOffsetToBinaryConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(long (DateTimeOffset v) => DateTimeOffsetToBinaryConverter.ToLong(v), DateTimeOffset (long v) => DateTimeOffsetToBinaryConverter.ToDateTimeOffset(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter( - long (DateTimeOffset v) => DateTimeOffsetToBinaryConverter.ToLong(v), - DateTimeOffset (long v) => DateTimeOffsetToBinaryConverter.ToDateTimeOffset(v)))); + new ValueConverter(long (DateTimeOffset v) => DateTimeOffsetToBinaryConverter.ToLong(v), DateTimeOffset (long v) => DateTimeOffsetToBinaryConverter.ToDateTimeOffset(v)))); dateTimeOffsetToBinaryConverterProperty.SetSentinelFromProviderValue(0L); var dateTimeOffsetToBytesConverterProperty = runtimeEntityType.AddProperty( @@ -1204,27 +857,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeOffsetToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (DateTimeOffset v) => Convert.ToBase64String(DateTimeOffsetToBytesConverter.ToBytes(v)), - DateTimeOffset (string v) => DateTimeOffsetToBytesConverter.FromBytes(Convert.FromBase64String(v))), + dateTimeOffsetToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (DateTimeOffset v) => Convert.ToBase64String(DateTimeOffsetToBytesConverter.ToBytes(v)), DateTimeOffset (string v) => DateTimeOffsetToBytesConverter.FromBytes(Convert.FromBase64String(v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (DateTimeOffset v) => Convert.ToBase64String(DateTimeOffsetToBytesConverter.ToBytes(v)), - DateTimeOffset (string v) => DateTimeOffsetToBytesConverter.FromBytes(Convert.FromBase64String(v))))); + new ValueConverter(string (DateTimeOffset v) => Convert.ToBase64String(DateTimeOffsetToBytesConverter.ToBytes(v)), DateTimeOffset (string v) => DateTimeOffsetToBytesConverter.FromBytes(Convert.FromBase64String(v))))); dateTimeOffsetToBytesConverterProperty.SetSentinelFromProviderValue("AAAAAAAAAAAAAA=="); var dateTimeOffsetToStringConverterProperty = runtimeEntityType.AddProperty( @@ -1259,27 +898,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeOffsetToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz"), - DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture)), + dateTimeOffsetToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz"), DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz"), - DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture)))); + new ValueConverter(string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz"), DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture)))); dateTimeOffsetToStringConverterProperty.SetSentinelFromProviderValue("0001-01-01 00:00:00+00:00"); var dateTimeToBinaryConverterProperty = runtimeEntityType.AddProperty( @@ -1314,27 +939,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeToBinaryConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter( - long (DateTime v) => v.ToBinary(), - DateTime (long v) => DateTime.FromBinary(v)), + dateTimeToBinaryConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(long (DateTime v) => v.ToBinary(), DateTime (long v) => DateTime.FromBinary(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter( - long (DateTime v) => v.ToBinary(), - DateTime (long v) => DateTime.FromBinary(v)))); + new ValueConverter(long (DateTime v) => v.ToBinary(), DateTime (long v) => DateTime.FromBinary(v)))); dateTimeToBinaryConverterProperty.SetSentinelFromProviderValue(0L); var dateTimeToStringConverterProperty = runtimeEntityType.AddProperty( @@ -1369,27 +980,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF"), - DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture)), + dateTimeToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF"), DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF"), - DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture)))); + new ValueConverter(string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF"), DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture)))); dateTimeToStringConverterProperty.SetSentinelFromProviderValue("0001-01-01 00:00:00"); var dateTimeToTicksConverterProperty = runtimeEntityType.AddProperty( @@ -1424,20 +1021,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeToTicksConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + dateTimeToTicksConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance); var @decimal = runtimeEntityType.AddProperty( @@ -1472,20 +1056,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @decimal.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - clrType: typeof(decimal), + @decimal.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDecimalReaderWriter.Instance); var decimalArray = runtimeEntityType.AddProperty( @@ -1519,36 +1090,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - decimalArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)), - keyComparer: new ValueComparer( - bool (decimal[] v1, decimal[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (decimal[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - decimal[] (decimal[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (decimal[] v1, decimal[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (decimal[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - decimal[] (decimal[] source) => source.ToArray()), - clrType: typeof(decimal[]), + decimalArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDecimalReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - clrType: typeof(decimal), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDecimalReaderWriter.Instance)); var decimalArrayElementType = decimalArray.SetElementType(typeof(decimal)); decimalArrayElementType.TypeMapping = decimalArray.TypeMapping.ElementTypeMapping; @@ -1585,27 +1132,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - decimalNumberToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (decimal v) => Convert.ToBase64String(NumberToBytesConverter.DecimalToBytes(v)), - decimal (string v) => (Convert.FromBase64String(v) == null ? 0M : NumberToBytesConverter.BytesToDecimal(Convert.FromBase64String(v)))), + decimalNumberToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (decimal v) => Convert.ToBase64String(NumberToBytesConverter.DecimalToBytes(v)), decimal (string v) => (Convert.FromBase64String(v) == null ? 0M : NumberToBytesConverter.BytesToDecimal(Convert.FromBase64String(v)))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (decimal v) => Convert.ToBase64String(NumberToBytesConverter.DecimalToBytes(v)), - decimal (string v) => (Convert.FromBase64String(v) == null ? 0M : NumberToBytesConverter.BytesToDecimal(Convert.FromBase64String(v)))))); + new ValueConverter(string (decimal v) => Convert.ToBase64String(NumberToBytesConverter.DecimalToBytes(v)), decimal (string v) => (Convert.FromBase64String(v) == null ? 0M : NumberToBytesConverter.BytesToDecimal(Convert.FromBase64String(v)))))); decimalNumberToBytesConverterProperty.SetSentinelFromProviderValue("AAAAAAAAAAAAAAAAAAAAAA=="); var decimalNumberToStringConverterProperty = runtimeEntityType.AddProperty( @@ -1640,27 +1173,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - decimalNumberToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), - decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), + decimalNumberToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), - decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); + new ValueConverter(string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); decimalNumberToStringConverterProperty.SetSentinelFromProviderValue("0"); var @double = runtimeEntityType.AddProperty( @@ -1695,20 +1214,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @double.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - clrType: typeof(double), + @double.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDoubleReaderWriter.Instance); var doubleArray = runtimeEntityType.AddProperty( @@ -1742,36 +1248,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - doubleArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)), - keyComparer: new ValueComparer( - bool (double[] v1, double[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (double[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - double[] (double[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (double[] v1, double[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (double[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - double[] (double[] source) => source.ToArray()), - clrType: typeof(double[]), + doubleArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultDoubleValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDoubleReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - clrType: typeof(double), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDoubleReaderWriter.Instance)); var doubleArrayElementType = doubleArray.SetElementType(typeof(double)); doubleArrayElementType.TypeMapping = doubleArray.TypeMapping.ElementTypeMapping; @@ -1808,27 +1290,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - doubleNumberToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (double v) => Convert.ToBase64String(NumberToBytesConverter.ReverseLong(BitConverter.GetBytes(v))), - double (string v) => (Convert.FromBase64String(v) == null ? 0D : BitConverter.ToDouble(NumberToBytesConverter.ReverseLong(Convert.FromBase64String(v)), 0))), + doubleNumberToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultDoubleValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (double v) => Convert.ToBase64String(NumberToBytesConverter.ReverseLong(BitConverter.GetBytes(v))), double (string v) => (Convert.FromBase64String(v) == null ? 0D : BitConverter.ToDouble(NumberToBytesConverter.ReverseLong(Convert.FromBase64String(v)), 0))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (double v) => Convert.ToBase64String(NumberToBytesConverter.ReverseLong(BitConverter.GetBytes(v))), - double (string v) => (Convert.FromBase64String(v) == null ? 0D : BitConverter.ToDouble(NumberToBytesConverter.ReverseLong(Convert.FromBase64String(v)), 0))))); + new ValueConverter(string (double v) => Convert.ToBase64String(NumberToBytesConverter.ReverseLong(BitConverter.GetBytes(v))), double (string v) => (Convert.FromBase64String(v) == null ? 0D : BitConverter.ToDouble(NumberToBytesConverter.ReverseLong(Convert.FromBase64String(v)), 0))))); doubleNumberToBytesConverterProperty.SetSentinelFromProviderValue("AAAAAAAAAAA="); var doubleNumberToStringConverterProperty = runtimeEntityType.AddProperty( @@ -1863,27 +1331,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - doubleNumberToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v)), - double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), + doubleNumberToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultDoubleValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v)), double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v)), - double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); + new ValueConverter(string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v)), double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); doubleNumberToStringConverterProperty.SetSentinelFromProviderValue("0"); var enum16 = runtimeEntityType.AddProperty( @@ -1917,27 +1371,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum16.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter( - short (CompiledModelTestBase.Enum16 value) => ((short)value), - CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + enum16.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter( - short (CompiledModelTestBase.Enum16 value) => ((short)value), - CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); enum16.SetSentinelFromProviderValue((short)0); var enum16AsString = runtimeEntityType.AddProperty( @@ -1972,27 +1412,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum16AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + enum16AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum16AsString.SetSentinelFromProviderValue("Default"); var enum32 = runtimeEntityType.AddProperty( @@ -2026,27 +1452,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum32.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (CompiledModelTestBase.Enum32 value) => ((int)value), - CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + enum32.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (CompiledModelTestBase.Enum32 value) => ((int)value), - CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); enum32.SetSentinelFromProviderValue(0); var enum32AsString = runtimeEntityType.AddProperty( @@ -2081,27 +1493,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum32AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + enum32AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum32AsString.SetSentinelFromProviderValue("Default"); var enum64 = runtimeEntityType.AddProperty( @@ -2135,27 +1533,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum64.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter( - long (CompiledModelTestBase.Enum64 value) => ((long)value), - CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + enum64.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter( - long (CompiledModelTestBase.Enum64 value) => ((long)value), - CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); enum64.SetSentinelFromProviderValue(0L); var enum64AsString = runtimeEntityType.AddProperty( @@ -2190,27 +1574,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum64AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + enum64AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum64AsString.SetSentinelFromProviderValue("Default"); var enum8 = runtimeEntityType.AddProperty( @@ -2244,27 +1614,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum8.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - converter: new ValueConverter( - sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), - CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + enum8.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter( - sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), - CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); enum8.SetSentinelFromProviderValue((sbyte)0); var enum8AsString = runtimeEntityType.AddProperty( @@ -2299,27 +1655,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum8AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + enum8AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum8AsString.SetSentinelFromProviderValue("Default"); var enumToNumberConverterProperty = runtimeEntityType.AddProperty( @@ -2354,27 +1696,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumToNumberConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (CompiledModelTestBase.Enum32 value) => ((int)value), - CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + enumToNumberConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (CompiledModelTestBase.Enum32 value) => ((int)value), - CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); enumToNumberConverterProperty.SetSentinelFromProviderValue(0); var enumToStringConverterProperty = runtimeEntityType.AddProperty( @@ -2409,27 +1737,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + enumToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))); enumToStringConverterProperty.SetSentinelFromProviderValue("Default"); var enumU16 = runtimeEntityType.AddProperty( @@ -2463,27 +1777,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU16.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - converter: new ValueConverter( - ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), - CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + enumU16.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter( - ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), - CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); enumU16.SetSentinelFromProviderValue((ushort)0); var enumU16AsString = runtimeEntityType.AddProperty( @@ -2518,27 +1818,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU16AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + enumU16AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU16AsString.SetSentinelFromProviderValue("Min"); var enumU32 = runtimeEntityType.AddProperty( @@ -2572,27 +1858,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU32.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - converter: new ValueConverter( - uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), - CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + enumU32.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter( - uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), - CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); enumU32.SetSentinelFromProviderValue(0u); var enumU32AsString = runtimeEntityType.AddProperty( @@ -2627,27 +1899,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU32AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + enumU32AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU32AsString.SetSentinelFromProviderValue("Min"); var enumU64 = runtimeEntityType.AddProperty( @@ -2681,27 +1939,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU64.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter( - ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), - CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + enumU64.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter( - ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), - CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))); + EnumToNumberConverter.Instance)); enumU64.SetSentinelFromProviderValue(0ul); var enumU64AsString = runtimeEntityType.AddProperty( @@ -2736,27 +1980,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU64AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + enumU64AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU64AsString.SetSentinelFromProviderValue("Min"); var enumU8 = runtimeEntityType.AddProperty( @@ -2790,27 +2020,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU8.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter( - byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), - CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + enumU8.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter( - byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), - CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); enumU8.SetSentinelFromProviderValue((byte)0); var enumU8AsString = runtimeEntityType.AddProperty( @@ -2845,27 +2061,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU8AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + enumU8AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU8AsString.SetSentinelFromProviderValue("Min"); var @float = runtimeEntityType.AddProperty( @@ -2900,20 +2102,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @float.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - clrType: typeof(float), + @float.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonFloatReaderWriter.Instance); var floatArray = runtimeEntityType.AddProperty( @@ -2947,36 +2136,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - floatArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)), - keyComparer: new ValueComparer( - bool (float[] v1, float[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (float[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - float[] (float[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (float[] v1, float[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (float[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - float[] (float[] source) => source.ToArray()), - clrType: typeof(float[]), + floatArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultFloatValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonFloatReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - clrType: typeof(float), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonFloatReaderWriter.Instance)); var floatArrayElementType = floatArray.SetElementType(typeof(float)); floatArrayElementType.TypeMapping = floatArray.TypeMapping.ElementTypeMapping; @@ -3012,27 +2177,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - guid.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)), + guid.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: GuidToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)))); + GuidToStringConverter.Instance)); guid.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var guidToBytesConverterProperty = runtimeEntityType.AddProperty( @@ -3067,27 +2218,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - guidToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Guid v) => Convert.ToBase64String(v.ToByteArray()), - Guid (string v) => new Guid(Convert.FromBase64String(v))), + guidToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (Guid v) => Convert.ToBase64String(v.ToByteArray()), Guid (string v) => new Guid(Convert.FromBase64String(v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Guid v) => Convert.ToBase64String(v.ToByteArray()), - Guid (string v) => new Guid(Convert.FromBase64String(v))))); + new ValueConverter(string (Guid v) => Convert.ToBase64String(v.ToByteArray()), Guid (string v) => new Guid(Convert.FromBase64String(v))))); guidToBytesConverterProperty.SetSentinelFromProviderValue("AAAAAAAAAAAAAAAAAAAAAA=="); var guidToStringConverterProperty = runtimeEntityType.AddProperty( @@ -3122,27 +2259,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - guidToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)), + guidToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)))); + new ValueConverter(string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); guidToStringConverterProperty.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var iPAddress = runtimeEntityType.AddProperty( @@ -3176,27 +2299,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - iPAddress.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + iPAddress.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))); + IPAddressToStringConverter.Instance)); var iPAddressToBytesConverterProperty = runtimeEntityType.AddProperty( "IPAddressToBytesConverterProperty", @@ -3230,27 +2339,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - iPAddressToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => Convert.ToBase64String(v.GetAddressBytes()), - IPAddress (string v) => new IPAddress(Convert.FromBase64String(v))), + iPAddressToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (IPAddress v) => Convert.ToBase64String(v.GetAddressBytes()), IPAddress (string v) => new IPAddress(Convert.FromBase64String(v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => Convert.ToBase64String(v.GetAddressBytes()), - IPAddress (string v) => new IPAddress(Convert.FromBase64String(v))))); + new ValueConverter(string (IPAddress v) => Convert.ToBase64String(v.GetAddressBytes()), IPAddress (string v) => new IPAddress(Convert.FromBase64String(v))))); var iPAddressToStringConverterProperty = runtimeEntityType.AddProperty( "IPAddressToStringConverterProperty", @@ -3284,27 +2379,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - iPAddressToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + iPAddressToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))); + new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))); var int16 = runtimeEntityType.AddProperty( "Int16", @@ -3338,20 +2419,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int16.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + int16.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance); var int16Array = runtimeEntityType.AddProperty( @@ -3385,36 +2453,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int16Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ValueComparer( - bool (short[] v1, short[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (short[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - short[] (short[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (short[] v1, short[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (short[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - short[] (short[] source) => source.ToArray()), - clrType: typeof(short[]), + int16Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt16ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var int16ArrayElementType = int16Array.SetElementType(typeof(short)); int16ArrayElementType.TypeMapping = int16Array.TypeMapping.ElementTypeMapping; @@ -3451,20 +2495,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int32.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + int32.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); var int32Array = runtimeEntityType.AddProperty( @@ -3498,36 +2529,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int32Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ValueComparer( - bool (int[] v1, int[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (int[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - int[] (int[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (int[] v1, int[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (int[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - int[] (int[] source) => source.ToArray()), - clrType: typeof(int[]), + int32Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance)); var int32ArrayElementType = int32Array.SetElementType(typeof(int)); int32ArrayElementType.TypeMapping = int32Array.TypeMapping.ElementTypeMapping; @@ -3563,53 +2570,18 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int32NestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)))), - keyComparer: new ValueComparer( - bool (int[][] v1, int[][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (int[][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - int[][] (int[][] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (int[][] v1, int[][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (int[][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - int[][] (int[][] source) => source.ToArray()), - clrType: typeof(int[][]), + int32NestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance)), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ValueComparer( - bool (int[] v1, int[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (int[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - int[] (int[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (int[] v1, int[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (int[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - int[] (int[] source) => source.ToArray()), - clrType: typeof(int[]), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance))); var int32NestedCollectionElementType = int32NestedCollection.SetElementType(typeof(int[])); int32NestedCollectionElementType.TypeMapping = int32NestedCollection.TypeMapping.ElementTypeMapping; @@ -3645,36 +2617,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int32ReadOnlyCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ValueComparer>( - bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), - int (IReadOnlyCollection v) => ((object)v).GetHashCode(), - IReadOnlyCollection (IReadOnlyCollection v) => v), - providerValueComparer: new ValueComparer>( - bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), - int (IReadOnlyCollection v) => ((object)v).GetHashCode(), - IReadOnlyCollection (IReadOnlyCollection v) => v), - clrType: typeof(IReadOnlyCollection), + int32ReadOnlyCollection.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, int>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, int>( JsonInt32ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance)); var int32ReadOnlyCollectionElementType = int32ReadOnlyCollection.SetElementType(typeof(int)); int32ReadOnlyCollectionElementType.TypeMapping = int32ReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -3711,20 +2659,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int64.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + int64.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); var int64Array = runtimeEntityType.AddProperty( @@ -3758,36 +2693,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int64Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - keyComparer: new ValueComparer( - bool (long[] v1, long[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (long[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - long[] (long[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (long[] v1, long[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (long[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - long[] (long[] source) => source.ToArray()), - clrType: typeof(long[]), + int64Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance)); var int64ArrayElementType = int64Array.SetElementType(typeof(long)); int64ArrayElementType.TypeMapping = int64Array.TypeMapping.ElementTypeMapping; @@ -3823,71 +2734,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int64NestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer[], IList>(new ConvertingValueComparer, object>(new ListOfReferenceTypesComparer, long[]>(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)))))), - keyComparer: new ValueComparer[]>( - bool (IList[] v1, IList[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (IList[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - IList[] (IList[] source) => source.ToArray()), - providerValueComparer: new ValueComparer[]>( - bool (IList[] v1, IList[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (IList[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - IList[] (IList[] source) => source.ToArray()), - clrType: typeof(IList[]), + int64NestedCollection.TypeMapping = CosmosTypeMapping[]>.Default.Clone( + comparer: new ListOfReferenceTypesComparer[], IList>(new ConvertingValueComparer, object>(new ListOfReferenceTypesComparer, long[]>(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))))), + keyComparer: ValueComparer[]>.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter[], IList>( new JsonCollectionOfReferencesReaderWriter, long[]>( new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance))), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, long[]>(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)))), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + elementMapping: CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, long[]>(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, long[]>( new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance)), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - keyComparer: new ValueComparer( - bool (long[] v1, long[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (long[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - long[] (long[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (long[] v1, long[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (long[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - long[] (long[] source) => source.ToArray()), - clrType: typeof(long[]), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance)))); var int64NestedCollectionElementType = int64NestedCollection.SetElementType(typeof(IList)); int64NestedCollectionElementType.TypeMapping = int64NestedCollection.TypeMapping.ElementTypeMapping; @@ -3924,20 +2789,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int8.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - clrType: typeof(sbyte), + int8.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSByteReaderWriter.Instance); var int8Array = runtimeEntityType.AddProperty( @@ -3971,36 +2823,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int8Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - keyComparer: new ValueComparer( - bool (sbyte[] v1, sbyte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (sbyte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - sbyte[] (sbyte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (sbyte[] v1, sbyte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (sbyte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - sbyte[] (sbyte[] source) => source.ToArray()), - clrType: typeof(sbyte[]), + int8Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - clrType: typeof(sbyte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSByteReaderWriter.Instance)); var int8ArrayElementType = int8Array.SetElementType(typeof(sbyte)); int8ArrayElementType.TypeMapping = int8Array.TypeMapping.ElementTypeMapping; @@ -4036,71 +2864,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int8NestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)))))), - keyComparer: new ValueComparer( - bool (sbyte[][][] v1, sbyte[][][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (sbyte[][][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - sbyte[][][] (sbyte[][][] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (sbyte[][][] v1, sbyte[][][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (sbyte[][][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - sbyte[][][] (sbyte[][][] source) => source.ToArray()), - clrType: typeof(sbyte[][][]), + int8NestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))))), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance))), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)))), - keyComparer: new ValueComparer( - bool (sbyte[][] v1, sbyte[][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (sbyte[][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - sbyte[][] (sbyte[][] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (sbyte[][] v1, sbyte[][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (sbyte[][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - sbyte[][] (sbyte[][] source) => source.ToArray()), - clrType: typeof(sbyte[][]), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance)), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - keyComparer: new ValueComparer( - bool (sbyte[] v1, sbyte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (sbyte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - sbyte[] (sbyte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (sbyte[] v1, sbyte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (sbyte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - sbyte[] (sbyte[] source) => source.ToArray()), - clrType: typeof(sbyte[]), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - clrType: typeof(sbyte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSByteReaderWriter.Instance)))); var int8NestedCollectionElementType = int8NestedCollection.SetElementType(typeof(sbyte[][])); int8NestedCollectionElementType.TypeMapping = int8NestedCollection.TypeMapping.ElementTypeMapping; @@ -4137,27 +2919,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - intNumberToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (int v) => Convert.ToBase64String(NumberToBytesConverter.ReverseInt(BitConverter.GetBytes(v))), - int (string v) => (Convert.FromBase64String(v) == null ? 0 : BitConverter.ToInt32(NumberToBytesConverter.ReverseInt((Convert.FromBase64String(v).Length == 0 ? new byte[4] : Convert.FromBase64String(v))), 0))), + intNumberToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (int v) => Convert.ToBase64String(NumberToBytesConverter.ReverseInt(BitConverter.GetBytes(v))), int (string v) => (Convert.FromBase64String(v) == null ? 0 : BitConverter.ToInt32(NumberToBytesConverter.ReverseInt((Convert.FromBase64String(v).Length == 0 ? new byte[4] : Convert.FromBase64String(v))), 0))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (int v) => Convert.ToBase64String(NumberToBytesConverter.ReverseInt(BitConverter.GetBytes(v))), - int (string v) => (Convert.FromBase64String(v) == null ? 0 : BitConverter.ToInt32(NumberToBytesConverter.ReverseInt((Convert.FromBase64String(v).Length == 0 ? new byte[4] : Convert.FromBase64String(v))), 0))))); + new ValueConverter(string (int v) => Convert.ToBase64String(NumberToBytesConverter.ReverseInt(BitConverter.GetBytes(v))), int (string v) => (Convert.FromBase64String(v) == null ? 0 : BitConverter.ToInt32(NumberToBytesConverter.ReverseInt((Convert.FromBase64String(v).Length == 0 ? new byte[4] : Convert.FromBase64String(v))), 0))))); intNumberToBytesConverterProperty.SetSentinelFromProviderValue("AAAAAA=="); var intNumberToStringConverterProperty = runtimeEntityType.AddProperty( @@ -4192,27 +2960,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - intNumberToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), - int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), + intNumberToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), - int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); + new ValueConverter(string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); intNumberToStringConverterProperty.SetSentinelFromProviderValue("0"); var nullIntToNullStringConverterProperty = runtimeEntityType.AddProperty( @@ -4248,19 +3002,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullIntToNullStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int? v1, int? v2) => v1 == v2, - int (int? v) => ((int)v), - int? (int? v) => v), - keyComparer: new ValueComparer( - bool (int? v1, int? v2) => v1 == v2, - int (int? v) => ((int)v), - int? (int? v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullIntToNullStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (int? v) => (v == null ? null : ((object)v).ToString()), int? (string v) => (v == null || v == "" ? null : ((int? )(int.Parse(v)))), true), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, @@ -4298,23 +3042,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableBool.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + nullableBool.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance); nullableBool.SetComparer(new NullableValueComparer(nullableBool.TypeMapping.Comparer)); - nullableBool.SetKeyComparer(new NullableValueComparer(nullableBool.TypeMapping.KeyComparer)); var nullableBoolArray = runtimeEntityType.AddProperty( "NullableBoolArray", @@ -4347,36 +3077,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableBoolArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))), - keyComparer: new ValueComparer( - bool (bool? [] v1, bool? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (bool? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - bool? [] (bool? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (bool? [] v1, bool? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (bool? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - bool? [] (bool? [] source) => source.ToArray()), - clrType: typeof(bool?[]), + nullableBoolArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonBoolReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance)); var nullableBoolArrayElementType = nullableBoolArray.SetElementType(typeof(bool?), nullable: true); @@ -4415,27 +3121,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableBytes.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (byte[] v) => Convert.ToBase64String(v), - byte[] (string v) => Convert.FromBase64String(v)), + nullableBytes.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + keyComparer: ValueComparer.DefaultWithStructuralComparisons, + providerValueComparer: DefaultValueComparer.Default, + converter: BytesToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (byte[] v) => Convert.ToBase64String(v), - byte[] (string v) => Convert.FromBase64String(v)))); + BytesToStringConverter.Instance)); var nullableChar = runtimeEntityType.AddProperty( "NullableChar", @@ -4469,23 +3162,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableChar.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - clrType: typeof(char), + nullableChar.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonCharReaderWriter.Instance); nullableChar.SetComparer(new NullableValueComparer(nullableChar.TypeMapping.Comparer)); - nullableChar.SetKeyComparer(new NullableValueComparer(nullableChar.TypeMapping.KeyComparer)); var nullableCharArray = runtimeEntityType.AddProperty( "NullableCharArray", @@ -4518,36 +3197,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableCharArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v))), - keyComparer: new ValueComparer( - bool (char? [] v1, char? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (char? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - char? [] (char? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (char? [] v1, char? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (char? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - char? [] (char? [] source) => source.ToArray()), - clrType: typeof(char?[]), + nullableCharArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonCharReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - clrType: typeof(char), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonCharReaderWriter.Instance)); var nullableCharArrayElementType = nullableCharArray.SetElementType(typeof(char?), nullable: true); @@ -4586,23 +3241,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDateOnly.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - clrType: typeof(DateOnly), + nullableDateOnly.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateOnlyReaderWriter.Instance); nullableDateOnly.SetComparer(new NullableValueComparer(nullableDateOnly.TypeMapping.Comparer)); - nullableDateOnly.SetKeyComparer(new NullableValueComparer(nullableDateOnly.TypeMapping.KeyComparer)); var nullableDateTime = runtimeEntityType.AddProperty( "NullableDateTime", @@ -4636,23 +3277,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDateTime.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + nullableDateTime.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance); nullableDateTime.SetComparer(new NullableValueComparer(nullableDateTime.TypeMapping.Comparer)); - nullableDateTime.SetKeyComparer(new NullableValueComparer(nullableDateTime.TypeMapping.KeyComparer)); var nullableDecimal = runtimeEntityType.AddProperty( "NullableDecimal", @@ -4686,23 +3313,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDecimal.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - clrType: typeof(decimal), + nullableDecimal.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDecimalReaderWriter.Instance); nullableDecimal.SetComparer(new NullableValueComparer(nullableDecimal.TypeMapping.Comparer)); - nullableDecimal.SetKeyComparer(new NullableValueComparer(nullableDecimal.TypeMapping.KeyComparer)); var nullableDecimalArray = runtimeEntityType.AddProperty( "NullableDecimalArray", @@ -4735,36 +3348,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDecimalArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))), - keyComparer: new ValueComparer( - bool (decimal? [] v1, decimal? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (decimal? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - decimal? [] (decimal? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (decimal? [] v1, decimal? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (decimal? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - decimal? [] (decimal? [] source) => source.ToArray()), - clrType: typeof(decimal?[]), + nullableDecimalArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDecimalReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - clrType: typeof(decimal), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDecimalReaderWriter.Instance)); var nullableDecimalArrayElementType = nullableDecimalArray.SetElementType(typeof(decimal?), nullable: true); @@ -4803,23 +3392,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDouble.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - clrType: typeof(double), + nullableDouble.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDoubleReaderWriter.Instance); nullableDouble.SetComparer(new NullableValueComparer(nullableDouble.TypeMapping.Comparer)); - nullableDouble.SetKeyComparer(new NullableValueComparer(nullableDouble.TypeMapping.KeyComparer)); var nullableDoubleArray = runtimeEntityType.AddProperty( "NullableDoubleArray", @@ -4852,36 +3427,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDoubleArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))), - keyComparer: new ValueComparer( - bool (double? [] v1, double? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (double? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - double? [] (double? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (double? [] v1, double? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (double? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - double? [] (double? [] source) => source.ToArray()), - clrType: typeof(double?[]), + nullableDoubleArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultDoubleValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDoubleReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - clrType: typeof(double), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDoubleReaderWriter.Instance)); var nullableDoubleArrayElementType = nullableDoubleArray.SetElementType(typeof(double?), nullable: true); @@ -4920,29 +3471,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum16.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter( - short (CompiledModelTestBase.Enum16 value) => ((short)value), - CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + nullableEnum16.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter( - short (CompiledModelTestBase.Enum16 value) => ((short)value), - CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); nullableEnum16.SetComparer(new NullableValueComparer(nullableEnum16.TypeMapping.Comparer)); - nullableEnum16.SetKeyComparer(new NullableValueComparer(nullableEnum16.TypeMapping.KeyComparer)); var nullableEnum16AsString = runtimeEntityType.AddProperty( "NullableEnum16AsString", @@ -4976,29 +3512,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum16AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter( - short (CompiledModelTestBase.Enum16 value) => ((short)value), - CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + nullableEnum16AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter( - short (CompiledModelTestBase.Enum16 value) => ((short)value), - CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); nullableEnum16AsString.SetComparer(new NullableValueComparer(nullableEnum16AsString.TypeMapping.Comparer)); - nullableEnum16AsString.SetKeyComparer(new NullableValueComparer(nullableEnum16AsString.TypeMapping.KeyComparer)); var nullableEnum32 = runtimeEntityType.AddProperty( "NullableEnum32", @@ -5032,29 +3553,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum32.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (CompiledModelTestBase.Enum32 value) => ((int)value), - CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + nullableEnum32.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (CompiledModelTestBase.Enum32 value) => ((int)value), - CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); nullableEnum32.SetComparer(new NullableValueComparer(nullableEnum32.TypeMapping.Comparer)); - nullableEnum32.SetKeyComparer(new NullableValueComparer(nullableEnum32.TypeMapping.KeyComparer)); var nullableEnum32AsString = runtimeEntityType.AddProperty( "NullableEnum32AsString", @@ -5088,29 +3594,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum32AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (CompiledModelTestBase.Enum32 value) => ((int)value), - CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + nullableEnum32AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (CompiledModelTestBase.Enum32 value) => ((int)value), - CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); nullableEnum32AsString.SetComparer(new NullableValueComparer(nullableEnum32AsString.TypeMapping.Comparer)); - nullableEnum32AsString.SetKeyComparer(new NullableValueComparer(nullableEnum32AsString.TypeMapping.KeyComparer)); var nullableEnum64 = runtimeEntityType.AddProperty( "NullableEnum64", @@ -5144,29 +3635,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum64.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter( - long (CompiledModelTestBase.Enum64 value) => ((long)value), - CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + nullableEnum64.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter( - long (CompiledModelTestBase.Enum64 value) => ((long)value), - CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); nullableEnum64.SetComparer(new NullableValueComparer(nullableEnum64.TypeMapping.Comparer)); - nullableEnum64.SetKeyComparer(new NullableValueComparer(nullableEnum64.TypeMapping.KeyComparer)); var nullableEnum64AsString = runtimeEntityType.AddProperty( "NullableEnum64AsString", @@ -5200,29 +3676,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum64AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter( - long (CompiledModelTestBase.Enum64 value) => ((long)value), - CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + nullableEnum64AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter( - long (CompiledModelTestBase.Enum64 value) => ((long)value), - CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); nullableEnum64AsString.SetComparer(new NullableValueComparer(nullableEnum64AsString.TypeMapping.Comparer)); - nullableEnum64AsString.SetKeyComparer(new NullableValueComparer(nullableEnum64AsString.TypeMapping.KeyComparer)); var nullableEnum8 = runtimeEntityType.AddProperty( "NullableEnum8", @@ -5256,29 +3717,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum8.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - converter: new ValueConverter( - sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), - CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + nullableEnum8.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter( - sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), - CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); nullableEnum8.SetComparer(new NullableValueComparer(nullableEnum8.TypeMapping.Comparer)); - nullableEnum8.SetKeyComparer(new NullableValueComparer(nullableEnum8.TypeMapping.KeyComparer)); var nullableEnum8AsString = runtimeEntityType.AddProperty( "NullableEnum8AsString", @@ -5312,29 +3758,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum8AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - converter: new ValueConverter( - sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), - CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + nullableEnum8AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter( - sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), - CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); nullableEnum8AsString.SetComparer(new NullableValueComparer(nullableEnum8AsString.TypeMapping.Comparer)); - nullableEnum8AsString.SetKeyComparer(new NullableValueComparer(nullableEnum8AsString.TypeMapping.KeyComparer)); var nullableEnumU16 = runtimeEntityType.AddProperty( "NullableEnumU16", @@ -5368,29 +3799,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU16.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - converter: new ValueConverter( - ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), - CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + nullableEnumU16.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter( - ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), - CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); nullableEnumU16.SetComparer(new NullableValueComparer(nullableEnumU16.TypeMapping.Comparer)); - nullableEnumU16.SetKeyComparer(new NullableValueComparer(nullableEnumU16.TypeMapping.KeyComparer)); var nullableEnumU16AsString = runtimeEntityType.AddProperty( "NullableEnumU16AsString", @@ -5424,29 +3840,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU16AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - converter: new ValueConverter( - ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), - CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + nullableEnumU16AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter( - ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), - CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); nullableEnumU16AsString.SetComparer(new NullableValueComparer(nullableEnumU16AsString.TypeMapping.Comparer)); - nullableEnumU16AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU16AsString.TypeMapping.KeyComparer)); var nullableEnumU32 = runtimeEntityType.AddProperty( "NullableEnumU32", @@ -5480,29 +3881,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU32.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - converter: new ValueConverter( - uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), - CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + nullableEnumU32.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter( - uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), - CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); nullableEnumU32.SetComparer(new NullableValueComparer(nullableEnumU32.TypeMapping.Comparer)); - nullableEnumU32.SetKeyComparer(new NullableValueComparer(nullableEnumU32.TypeMapping.KeyComparer)); var nullableEnumU32AsString = runtimeEntityType.AddProperty( "NullableEnumU32AsString", @@ -5536,29 +3922,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU32AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - converter: new ValueConverter( - uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), - CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + nullableEnumU32AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter( - uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), - CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); nullableEnumU32AsString.SetComparer(new NullableValueComparer(nullableEnumU32AsString.TypeMapping.Comparer)); - nullableEnumU32AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU32AsString.TypeMapping.KeyComparer)); var nullableEnumU64 = runtimeEntityType.AddProperty( "NullableEnumU64", @@ -5592,29 +3963,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU64.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter( - ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), - CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + nullableEnumU64.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter( - ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), - CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))); + EnumToNumberConverter.Instance)); nullableEnumU64.SetComparer(new NullableValueComparer(nullableEnumU64.TypeMapping.Comparer)); - nullableEnumU64.SetKeyComparer(new NullableValueComparer(nullableEnumU64.TypeMapping.KeyComparer)); var nullableEnumU64AsString = runtimeEntityType.AddProperty( "NullableEnumU64AsString", @@ -5648,29 +4004,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU64AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter( - ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), - CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + nullableEnumU64AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter( - ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), - CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))); + EnumToNumberConverter.Instance)); nullableEnumU64AsString.SetComparer(new NullableValueComparer(nullableEnumU64AsString.TypeMapping.Comparer)); - nullableEnumU64AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU64AsString.TypeMapping.KeyComparer)); var nullableEnumU8 = runtimeEntityType.AddProperty( "NullableEnumU8", @@ -5704,29 +4045,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU8.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter( - byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), - CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + nullableEnumU8.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter( - byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), - CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); nullableEnumU8.SetComparer(new NullableValueComparer(nullableEnumU8.TypeMapping.Comparer)); - nullableEnumU8.SetKeyComparer(new NullableValueComparer(nullableEnumU8.TypeMapping.KeyComparer)); var nullableEnumU8AsString = runtimeEntityType.AddProperty( "NullableEnumU8AsString", @@ -5760,29 +4086,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU8AsString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter( - byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), - CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + nullableEnumU8AsString.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter( - byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), - CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); nullableEnumU8AsString.SetComparer(new NullableValueComparer(nullableEnumU8AsString.TypeMapping.Comparer)); - nullableEnumU8AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU8AsString.TypeMapping.KeyComparer)); var nullableFloat = runtimeEntityType.AddProperty( "NullableFloat", @@ -5816,23 +4127,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableFloat.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - clrType: typeof(float), + nullableFloat.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonFloatReaderWriter.Instance); nullableFloat.SetComparer(new NullableValueComparer(nullableFloat.TypeMapping.Comparer)); - nullableFloat.SetKeyComparer(new NullableValueComparer(nullableFloat.TypeMapping.KeyComparer)); var nullableFloatArray = runtimeEntityType.AddProperty( "NullableFloatArray", @@ -5865,36 +4162,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableFloatArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))), - keyComparer: new ValueComparer( - bool (float? [] v1, float? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (float? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - float? [] (float? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (float? [] v1, float? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (float? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - float? [] (float? [] source) => source.ToArray()), - clrType: typeof(float?[]), + nullableFloatArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultFloatValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonFloatReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - clrType: typeof(float), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonFloatReaderWriter.Instance)); var nullableFloatArrayElementType = nullableFloatArray.SetElementType(typeof(float?), nullable: true); @@ -5933,29 +4206,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableGuid.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)), + nullableGuid.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: GuidToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)))); + GuidToStringConverter.Instance)); nullableGuid.SetComparer(new NullableValueComparer(nullableGuid.TypeMapping.Comparer)); - nullableGuid.SetKeyComparer(new NullableValueComparer(nullableGuid.TypeMapping.KeyComparer)); var nullableIPAddress = runtimeEntityType.AddProperty( "NullableIPAddress", @@ -5989,27 +4247,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableIPAddress.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + nullableIPAddress.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))); + IPAddressToStringConverter.Instance)); var nullableInt16 = runtimeEntityType.AddProperty( "NullableInt16", @@ -6043,23 +4287,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt16.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + nullableInt16.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance); nullableInt16.SetComparer(new NullableValueComparer(nullableInt16.TypeMapping.Comparer)); - nullableInt16.SetKeyComparer(new NullableValueComparer(nullableInt16.TypeMapping.KeyComparer)); var nullableInt16Array = runtimeEntityType.AddProperty( "NullableInt16Array", @@ -6092,36 +4322,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt16Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))), - keyComparer: new ValueComparer( - bool (short? [] v1, short? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (short? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - short? [] (short? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (short? [] v1, short? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (short? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - short? [] (short? [] source) => source.ToArray()), - clrType: typeof(short?[]), + nullableInt16Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt16ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var nullableInt16ArrayElementType = nullableInt16Array.SetElementType(typeof(short?), nullable: true); @@ -6160,23 +4366,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt32.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + nullableInt32.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); nullableInt32.SetComparer(new NullableValueComparer(nullableInt32.TypeMapping.Comparer)); - nullableInt32.SetKeyComparer(new NullableValueComparer(nullableInt32.TypeMapping.KeyComparer)); var nullableInt32Array = runtimeEntityType.AddProperty( "NullableInt32Array", @@ -6209,36 +4401,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt32Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - keyComparer: new ValueComparer( - bool (int? [] v1, int? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (int? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - int? [] (int? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (int? [] v1, int? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (int? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - int? [] (int? [] source) => source.ToArray()), - clrType: typeof(int?[]), + nullableInt32Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance)); var nullableInt32ArrayElementType = nullableInt32Array.SetElementType(typeof(int?), nullable: true); @@ -6276,53 +4444,18 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt32NestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))))), - keyComparer: new ValueComparer( - bool (int? [][] v1, int? [][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (int? [][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - int? [][] (int? [][] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (int? [][] v1, int? [][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (int? [][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - int? [][] (int? [][] source) => source.ToArray()), - clrType: typeof(int?[][]), + nullableInt32NestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)))), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance)), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - keyComparer: new ValueComparer( - bool (int? [] v1, int? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (int? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - int? [] (int? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (int? [] v1, int? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (int? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - int? [] (int? [] source) => source.ToArray()), - clrType: typeof(int?[]), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance))); var nullableInt32NestedCollectionElementType = nullableInt32NestedCollection.SetElementType(typeof(int?[])); nullableInt32NestedCollectionElementType.TypeMapping = nullableInt32NestedCollection.TypeMapping.ElementTypeMapping; @@ -6359,23 +4492,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt64.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + nullableInt64.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); nullableInt64.SetComparer(new NullableValueComparer(nullableInt64.TypeMapping.Comparer)); - nullableInt64.SetKeyComparer(new NullableValueComparer(nullableInt64.TypeMapping.KeyComparer)); var nullableInt64Array = runtimeEntityType.AddProperty( "NullableInt64Array", @@ -6408,36 +4527,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt64Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - keyComparer: new ValueComparer( - bool (long? [] v1, long? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (long? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - long? [] (long? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (long? [] v1, long? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (long? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - long? [] (long? [] source) => source.ToArray()), - clrType: typeof(long?[]), + nullableInt64Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance)); var nullableInt64ArrayElementType = nullableInt64Array.SetElementType(typeof(long?), nullable: true); @@ -6475,71 +4570,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt64NestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, long?[][]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))))))), - keyComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - providerValueComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - clrType: typeof(List), + nullableInt64NestedCollection.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, long?[][]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)))))), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, long?[][]>( new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance))), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))))), - keyComparer: new ValueComparer( - bool (long? [][] v1, long? [][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (long? [][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - long? [][] (long? [][] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (long? [][] v1, long? [][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (long? [][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - long? [][] (long? [][] source) => source.ToArray()), - clrType: typeof(long?[][]), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)))), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance)), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - keyComparer: new ValueComparer( - bool (long? [] v1, long? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (long? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - long? [] (long? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (long? [] v1, long? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (long? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - long? [] (long? [] source) => source.ToArray()), - clrType: typeof(long?[]), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance)))); var nullableInt64NestedCollectionElementType = nullableInt64NestedCollection.SetElementType(typeof(long?[][])); nullableInt64NestedCollectionElementType.TypeMapping = nullableInt64NestedCollection.TypeMapping.ElementTypeMapping; @@ -6576,23 +4625,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt8.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - clrType: typeof(sbyte), + nullableInt8.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSByteReaderWriter.Instance); nullableInt8.SetComparer(new NullableValueComparer(nullableInt8.TypeMapping.Comparer)); - nullableInt8.SetKeyComparer(new NullableValueComparer(nullableInt8.TypeMapping.KeyComparer)); var nullableInt8Array = runtimeEntityType.AddProperty( "NullableInt8Array", @@ -6625,36 +4660,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt8Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v))), - keyComparer: new ValueComparer( - bool (sbyte? [] v1, sbyte? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (sbyte? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - sbyte? [] (sbyte? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (sbyte? [] v1, sbyte? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (sbyte? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - sbyte? [] (sbyte? [] source) => source.ToArray()), - clrType: typeof(sbyte?[]), + nullableInt8Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - clrType: typeof(sbyte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSByteReaderWriter.Instance)); var nullableInt8ArrayElementType = nullableInt8Array.SetElementType(typeof(sbyte?), nullable: true); @@ -6693,27 +4704,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullablePhysicalAddress.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + nullablePhysicalAddress.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + PhysicalAddressToStringConverter.Instance)); var nullableString = runtimeEntityType.AddProperty( "NullableString", @@ -6747,20 +4744,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableString.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + nullableString.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var nullableStringArray = runtimeEntityType.AddProperty( @@ -6794,36 +4778,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableStringArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer( - bool (string[] v1, string[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (string[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - string[] (string[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string[] v1, string[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (string[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - string[] (string[] source) => source.ToArray()), - clrType: typeof(string[]), + nullableStringArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var nullableStringArrayElementType = nullableStringArray.SetElementType(typeof(string), nullable: true); @@ -6860,53 +4820,18 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableStringNestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)))), - keyComparer: new ValueComparer( - bool (string[][] v1, string[][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (string[][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - string[][] (string[][] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string[][] v1, string[][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (string[][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - string[][] (string[][] source) => source.ToArray()), - clrType: typeof(string[][]), + nullableStringNestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(DefaultValueComparer.Default))), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance)), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer( - bool (string[] v1, string[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (string[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - string[] (string[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string[] v1, string[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (string[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - string[] (string[] source) => source.ToArray()), - clrType: typeof(string[]), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance))); var nullableStringNestedCollectionElementType = nullableStringNestedCollection.SetElementType(typeof(string[])); nullableStringNestedCollectionElementType.TypeMapping = nullableStringNestedCollection.TypeMapping.ElementTypeMapping; @@ -6945,7 +4870,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableTimeOnly.TypeMapping = CosmosTimeOnlyTypeMapping.Default; nullableTimeOnly.SetComparer(new NullableValueComparer(nullableTimeOnly.TypeMapping.Comparer)); - nullableTimeOnly.SetKeyComparer(new NullableValueComparer(nullableTimeOnly.TypeMapping.KeyComparer)); var nullableTimeSpan = runtimeEntityType.AddProperty( "NullableTimeSpan", @@ -6981,7 +4905,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableTimeSpan.TypeMapping = CosmosTimeSpanTypeMapping.Default; nullableTimeSpan.SetComparer(new NullableValueComparer(nullableTimeSpan.TypeMapping.Comparer)); - nullableTimeSpan.SetKeyComparer(new NullableValueComparer(nullableTimeSpan.TypeMapping.KeyComparer)); var nullableUInt16 = runtimeEntityType.AddProperty( "NullableUInt16", @@ -7015,23 +4938,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt16.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - clrType: typeof(ushort), + nullableUInt16.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt16ReaderWriter.Instance); nullableUInt16.SetComparer(new NullableValueComparer(nullableUInt16.TypeMapping.Comparer)); - nullableUInt16.SetKeyComparer(new NullableValueComparer(nullableUInt16.TypeMapping.KeyComparer)); var nullableUInt16Array = runtimeEntityType.AddProperty( "NullableUInt16Array", @@ -7064,36 +4973,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt16Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v))), - keyComparer: new ValueComparer( - bool (ushort? [] v1, ushort? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (ushort? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - ushort? [] (ushort? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (ushort? [] v1, ushort? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (ushort? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - ushort? [] (ushort? [] source) => source.ToArray()), - clrType: typeof(ushort?[]), + nullableUInt16Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUInt16ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - clrType: typeof(ushort), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt16ReaderWriter.Instance)); var nullableUInt16ArrayElementType = nullableUInt16Array.SetElementType(typeof(ushort?), nullable: true); @@ -7132,23 +5017,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt32.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - clrType: typeof(uint), + nullableUInt32.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt32ReaderWriter.Instance); nullableUInt32.SetComparer(new NullableValueComparer(nullableUInt32.TypeMapping.Comparer)); - nullableUInt32.SetKeyComparer(new NullableValueComparer(nullableUInt32.TypeMapping.KeyComparer)); var nullableUInt32Array = runtimeEntityType.AddProperty( "NullableUInt32Array", @@ -7181,36 +5052,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt32Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v))), - keyComparer: new ValueComparer( - bool (uint? [] v1, uint? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (uint? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - uint? [] (uint? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (uint? [] v1, uint? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (uint? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - uint? [] (uint? [] source) => source.ToArray()), - clrType: typeof(uint?[]), + nullableUInt32Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUInt32ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - clrType: typeof(uint), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt32ReaderWriter.Instance)); var nullableUInt32ArrayElementType = nullableUInt32Array.SetElementType(typeof(uint?), nullable: true); @@ -7249,23 +5096,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt64.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - clrType: typeof(ulong), + nullableUInt64.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt64ReaderWriter.Instance); nullableUInt64.SetComparer(new NullableValueComparer(nullableUInt64.TypeMapping.Comparer)); - nullableUInt64.SetKeyComparer(new NullableValueComparer(nullableUInt64.TypeMapping.KeyComparer)); var nullableUInt64Array = runtimeEntityType.AddProperty( "NullableUInt64Array", @@ -7298,36 +5131,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt64Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v))), - keyComparer: new ValueComparer( - bool (ulong? [] v1, ulong? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (ulong? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - ulong? [] (ulong? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (ulong? [] v1, ulong? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (ulong? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - ulong? [] (ulong? [] source) => source.ToArray()), - clrType: typeof(ulong?[]), + nullableUInt64Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUInt64ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - clrType: typeof(ulong), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt64ReaderWriter.Instance)); var nullableUInt64ArrayElementType = nullableUInt64Array.SetElementType(typeof(ulong?), nullable: true); @@ -7366,23 +5175,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt8.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + nullableUInt8.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance); nullableUInt8.SetComparer(new NullableValueComparer(nullableUInt8.TypeMapping.Comparer)); - nullableUInt8.SetKeyComparer(new NullableValueComparer(nullableUInt8.TypeMapping.KeyComparer)); var nullableUInt8Array = runtimeEntityType.AddProperty( "NullableUInt8Array", @@ -7415,36 +5210,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt8Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - keyComparer: new ValueComparer( - bool (byte? [] v1, byte? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte? [] (byte? [] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte? [] v1, byte? [] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte? [] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte? [] (byte? [] source) => source.ToArray()), - clrType: typeof(byte?[]), + nullableUInt8Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var nullableUInt8ArrayElementType = nullableUInt8Array.SetElementType(typeof(byte?), nullable: true); @@ -7483,27 +5254,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUri.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + nullableUri.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + UriToStringConverter.Instance)); var physicalAddress = runtimeEntityType.AddProperty( "PhysicalAddress", @@ -7536,27 +5293,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - physicalAddress.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + physicalAddress.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + PhysicalAddressToStringConverter.Instance)); var physicalAddressToBytesConverterProperty = runtimeEntityType.AddProperty( "PhysicalAddressToBytesConverterProperty", @@ -7590,27 +5333,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - physicalAddressToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (PhysicalAddress v) => Convert.ToBase64String(v.GetAddressBytes()), - PhysicalAddress (string v) => new PhysicalAddress(Convert.FromBase64String(v))), + physicalAddressToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (PhysicalAddress v) => Convert.ToBase64String(v.GetAddressBytes()), PhysicalAddress (string v) => new PhysicalAddress(Convert.FromBase64String(v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => Convert.ToBase64String(v.GetAddressBytes()), - PhysicalAddress (string v) => new PhysicalAddress(Convert.FromBase64String(v))))); + new ValueConverter(string (PhysicalAddress v) => Convert.ToBase64String(v.GetAddressBytes()), PhysicalAddress (string v) => new PhysicalAddress(Convert.FromBase64String(v))))); var physicalAddressToStringConverterProperty = runtimeEntityType.AddProperty( "PhysicalAddressToStringConverterProperty", @@ -7644,27 +5373,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - physicalAddressToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + physicalAddressToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); var @string = runtimeEntityType.AddProperty( "String", @@ -7697,20 +5412,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @string.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + @string.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var stringArray = runtimeEntityType.AddProperty( @@ -7744,36 +5446,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer( - bool (string[] v1, string[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (string[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - string[] (string[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string[] v1, string[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (string[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - string[] (string[] source) => source.ToArray()), - clrType: typeof(string[]), + stringArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var stringArrayElementType = stringArray.SetElementType(typeof(string)); stringArrayElementType.TypeMapping = stringArray.TypeMapping.ElementTypeMapping; @@ -7809,53 +5487,18 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringNestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)))), - keyComparer: new ValueComparer( - bool (string[][] v1, string[][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (string[][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - string[][] (string[][] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string[][] v1, string[][] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (string[][] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - string[][] (string[][] source) => source.ToArray()), - clrType: typeof(string[][]), + stringNestedCollection.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(DefaultValueComparer.Default))), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance)), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer( - bool (string[] v1, string[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (string[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - string[] (string[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string[] v1, string[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (string[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - string[] (string[] source) => source.ToArray()), - clrType: typeof(string[]), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance))); var stringNestedCollectionElementType = stringNestedCollection.SetElementType(typeof(string[])); stringNestedCollectionElementType.TypeMapping = stringNestedCollection.TypeMapping.ElementTypeMapping; @@ -7891,36 +5534,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringReadOnlyCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), - int (IReadOnlyCollection v) => ((object)v).GetHashCode(), - IReadOnlyCollection (IReadOnlyCollection v) => v), - providerValueComparer: new ValueComparer>( - bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), - int (IReadOnlyCollection v) => ((object)v).GetHashCode(), - IReadOnlyCollection (IReadOnlyCollection v) => v), - clrType: typeof(IReadOnlyCollection), + stringReadOnlyCollection.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var stringReadOnlyCollectionElementType = stringReadOnlyCollection.SetElementType(typeof(string)); stringReadOnlyCollectionElementType.TypeMapping = stringReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -7957,27 +5576,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToBoolConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - converter: new ValueConverter( - bool (string v) => Convert.ToBoolean(v), - string (bool v) => Convert.ToString(v)), + stringToBoolConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(bool (string v) => Convert.ToBoolean(v), string (bool v) => Convert.ToString(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonBoolReaderWriter.Instance, - new ValueConverter( - bool (string v) => Convert.ToBoolean(v), - string (bool v) => Convert.ToString(v)))); + new ValueConverter(bool (string v) => Convert.ToBoolean(v), string (bool v) => Convert.ToString(v)))); var stringToBytesConverterProperty = runtimeEntityType.AddProperty( "StringToBytesConverterProperty", @@ -8011,27 +5616,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (string v) => Convert.ToBase64String(Encoding.GetEncoding(12000).GetBytes(v)), - string (string v) => Encoding.GetEncoding(12000).GetString(Convert.FromBase64String(v))), + stringToBytesConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (string v) => Convert.ToBase64String(Encoding.GetEncoding(12000).GetBytes(v)), string (string v) => Encoding.GetEncoding(12000).GetString(Convert.FromBase64String(v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (string v) => Convert.ToBase64String(Encoding.GetEncoding(12000).GetBytes(v)), - string (string v) => Encoding.GetEncoding(12000).GetString(Convert.FromBase64String(v))))); + new ValueConverter(string (string v) => Convert.ToBase64String(Encoding.GetEncoding(12000).GetBytes(v)), string (string v) => Encoding.GetEncoding(12000).GetString(Convert.FromBase64String(v))))); var stringToCharConverterProperty = runtimeEntityType.AddProperty( "StringToCharConverterProperty", @@ -8065,27 +5655,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToCharConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - converter: new ValueConverter( - char (string v) => (v.Length < 1 ? '\0' : v[0]), - string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), + stringToCharConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(char (string v) => (v.Length < 1 ? '\0' : v[0]), string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonCharReaderWriter.Instance, - new ValueConverter( - char (string v) => (v.Length < 1 ? '\0' : v[0]), - string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))))); + new ValueConverter(char (string v) => (v.Length < 1 ? '\0' : v[0]), string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))))); var stringToDateOnlyConverterProperty = runtimeEntityType.AddProperty( "StringToDateOnlyConverterProperty", @@ -8119,27 +5695,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToDateOnlyConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - converter: new ValueConverter( - DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), - string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd")), + stringToDateOnlyConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd")), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDateOnlyReaderWriter.Instance, - new ValueConverter( - DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), - string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd")))); + new ValueConverter(DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd")))); var stringToDateTimeConverterProperty = runtimeEntityType.AddProperty( "StringToDateTimeConverterProperty", @@ -8173,27 +5735,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToDateTimeConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - converter: new ValueConverter( - DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture), - string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF")), + stringToDateTimeConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture), string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF")), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDateTimeReaderWriter.Instance, - new ValueConverter( - DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture), - string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF")))); + new ValueConverter(DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture), string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF")))); var stringToDateTimeOffsetConverterProperty = runtimeEntityType.AddProperty( "StringToDateTimeOffsetConverterProperty", @@ -8227,27 +5775,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToDateTimeOffsetConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - converter: new ValueConverter( - DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture), - string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz")), + stringToDateTimeOffsetConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultDateTimeOffsetValueComparer.Default, + converter: new ValueConverter(DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture), string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz")), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDateTimeOffsetReaderWriter.Instance, - new ValueConverter( - DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture), - string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz")))); + new ValueConverter(DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture), string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz")))); var stringToDecimalNumberConverterProperty = runtimeEntityType.AddProperty( "StringToDecimalNumberConverterProperty", @@ -8281,27 +5815,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToDecimalNumberConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - converter: new ValueConverter( - decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), - string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), + stringToDecimalNumberConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter( - decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), - string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))))); + new ValueConverter(decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))))); var stringToDoubleNumberConverterProperty = runtimeEntityType.AddProperty( "StringToDoubleNumberConverterProperty", @@ -8335,27 +5855,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToDoubleNumberConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - converter: new ValueConverter( - double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), - string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v))), + stringToDoubleNumberConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultDoubleValueComparer.Default, + converter: new ValueConverter(double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDoubleReaderWriter.Instance, - new ValueConverter( - double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), - string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v))))); + new ValueConverter(double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v))))); var stringToEnumConverterProperty = runtimeEntityType.AddProperty( "StringToEnumConverterProperty", @@ -8389,27 +5895,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToEnumConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - converter: new ValueConverter( - uint (string v) => ((uint)(StringEnumConverter.ConvertToEnum(v))), - string (uint value) => ((object)((CompiledModelTestBase.EnumU32)value)).ToString()), + stringToEnumConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(uint (string v) => ((uint)(StringEnumConverter.ConvertToEnum(v))), string (uint value) => ((object)((CompiledModelTestBase.EnumU32)value)).ToString()), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter( - uint (string v) => ((uint)(StringEnumConverter.ConvertToEnum(v))), - string (uint value) => ((object)((CompiledModelTestBase.EnumU32)value)).ToString()))); + new ValueConverter(uint (string v) => ((uint)(StringEnumConverter.ConvertToEnum(v))), string (uint value) => ((object)((CompiledModelTestBase.EnumU32)value)).ToString()))); var stringToGuidConverterProperty = runtimeEntityType.AddProperty( "StringToGuidConverterProperty", @@ -8442,20 +5934,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToGuidConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + stringToGuidConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var stringToIntNumberConverterProperty = runtimeEntityType.AddProperty( @@ -8490,27 +5969,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToIntNumberConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), - string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), + stringToIntNumberConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), - string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))))); + new ValueConverter(int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))))); var stringToTimeOnlyConverterProperty = runtimeEntityType.AddProperty( "StringToTimeOnlyConverterProperty", @@ -8544,27 +6009,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToTimeOnlyConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - converter: new ValueConverter( - TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), - string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o"))), + stringToTimeOnlyConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o"))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( CosmosJsonTimeOnlyReaderWriter.Instance, - new ValueConverter( - TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), - string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o"))))); + new ValueConverter(TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o"))))); var stringToTimeSpanConverterProperty = runtimeEntityType.AddProperty( "StringToTimeSpanConverterProperty", @@ -8598,27 +6049,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToTimeSpanConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - converter: new ValueConverter( - TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture), - string (TimeSpan v) => v.ToString("c")), + stringToTimeSpanConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture), string (TimeSpan v) => v.ToString("c")), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( CosmosJsonTimeSpanReaderWriter.Instance, - new ValueConverter( - TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture), - string (TimeSpan v) => v.ToString("c")))); + new ValueConverter(TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture), string (TimeSpan v) => v.ToString("c")))); var stringToUriConverterProperty = runtimeEntityType.AddProperty( "StringToUriConverterProperty", @@ -8652,27 +6089,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToUriConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString(), - string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString()), + stringToUriConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString(), string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString()), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString(), - string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString()))); + new ValueConverter(string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString(), string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString()))); var timeOnly = runtimeEntityType.AddProperty( "TimeOnly", @@ -8740,27 +6162,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeOnlyToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o")), - TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)), + timeOnlyToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o")), TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o")), - TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)))); + new ValueConverter(string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o")), TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)))); timeOnlyToStringConverterProperty.SetSentinelFromProviderValue("00:00:00"); var timeOnlyToTicksConverterProperty = runtimeEntityType.AddProperty( @@ -8795,27 +6203,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeOnlyToTicksConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter( - long (TimeOnly v) => v.Ticks, - TimeOnly (long v) => new TimeOnly(v)), + timeOnlyToTicksConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(long (TimeOnly v) => v.Ticks, TimeOnly (long v) => new TimeOnly(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter( - long (TimeOnly v) => v.Ticks, - TimeOnly (long v) => new TimeOnly(v)))); + new ValueConverter(long (TimeOnly v) => v.Ticks, TimeOnly (long v) => new TimeOnly(v)))); timeOnlyToTicksConverterProperty.SetSentinelFromProviderValue(0L); var timeSpan = runtimeEntityType.AddProperty( @@ -8884,27 +6278,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeSpanToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (TimeSpan v) => v.ToString("c"), - TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture)), + timeSpanToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (TimeSpan v) => v.ToString("c"), TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (TimeSpan v) => v.ToString("c"), - TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture)))); + new ValueConverter(string (TimeSpan v) => v.ToString("c"), TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture)))); timeSpanToStringConverterProperty.SetSentinelFromProviderValue("00:00:00"); var timeSpanToTicksConverterProperty = runtimeEntityType.AddProperty( @@ -8939,27 +6319,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeSpanToTicksConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter( - long (TimeSpan v) => v.Ticks, - TimeSpan (long v) => new TimeSpan(v)), + timeSpanToTicksConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(long (TimeSpan v) => v.Ticks, TimeSpan (long v) => new TimeSpan(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter( - long (TimeSpan v) => v.Ticks, - TimeSpan (long v) => new TimeSpan(v)))); + new ValueConverter(long (TimeSpan v) => v.Ticks, TimeSpan (long v) => new TimeSpan(v)))); timeSpanToTicksConverterProperty.SetSentinelFromProviderValue(0L); var uInt16 = runtimeEntityType.AddProperty( @@ -8994,20 +6360,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt16.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - clrType: typeof(ushort), + uInt16.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt16ReaderWriter.Instance); var uInt16Array = runtimeEntityType.AddProperty( @@ -9041,36 +6394,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt16Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v)), - keyComparer: new ValueComparer( - bool (ushort[] v1, ushort[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (ushort[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - ushort[] (ushort[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (ushort[] v1, ushort[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (ushort[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - ushort[] (ushort[] source) => source.ToArray()), - clrType: typeof(ushort[]), + uInt16Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUInt16ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - clrType: typeof(ushort), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt16ReaderWriter.Instance)); var uInt16ArrayElementType = uInt16Array.SetElementType(typeof(ushort)); uInt16ArrayElementType.TypeMapping = uInt16Array.TypeMapping.ElementTypeMapping; @@ -9107,20 +6436,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt32.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - clrType: typeof(uint), + uInt32.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt32ReaderWriter.Instance); var uInt32Array = runtimeEntityType.AddProperty( @@ -9154,36 +6470,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt32Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v)), - keyComparer: new ValueComparer( - bool (uint[] v1, uint[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (uint[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - uint[] (uint[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (uint[] v1, uint[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (uint[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - uint[] (uint[] source) => source.ToArray()), - clrType: typeof(uint[]), + uInt32Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUInt32ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - clrType: typeof(uint), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt32ReaderWriter.Instance)); var uInt32ArrayElementType = uInt32Array.SetElementType(typeof(uint)); uInt32ArrayElementType.TypeMapping = uInt32Array.TypeMapping.ElementTypeMapping; @@ -9220,20 +6512,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt64.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - clrType: typeof(ulong), + uInt64.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt64ReaderWriter.Instance); var uInt64Array = runtimeEntityType.AddProperty( @@ -9267,36 +6546,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt64Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v)), - keyComparer: new ValueComparer( - bool (ulong[] v1, ulong[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (ulong[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - ulong[] (ulong[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (ulong[] v1, ulong[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (ulong[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - ulong[] (ulong[] source) => source.ToArray()), - clrType: typeof(ulong[]), + uInt64Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUInt64ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - clrType: typeof(ulong), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt64ReaderWriter.Instance)); var uInt64ArrayElementType = uInt64Array.SetElementType(typeof(ulong)); uInt64ArrayElementType.TypeMapping = uInt64Array.TypeMapping.ElementTypeMapping; @@ -9333,20 +6588,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt8.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + uInt8.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance); var uInt8Array = runtimeEntityType.AddProperty( @@ -9380,27 +6622,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt8Array.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (byte[] v) => Convert.ToBase64String(v), - byte[] (string v) => Convert.FromBase64String(v)), + uInt8Array.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + keyComparer: ValueComparer.DefaultWithStructuralComparisons, + providerValueComparer: DefaultValueComparer.Default, + converter: BytesToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (byte[] v) => Convert.ToBase64String(v), - byte[] (string v) => Convert.FromBase64String(v)))); + BytesToStringConverter.Instance)); var uInt8ReadOnlyCollection = runtimeEntityType.AddProperty( "UInt8ReadOnlyCollection", @@ -9433,36 +6662,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt8ReadOnlyCollection.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), - int (IReadOnlyCollection v) => ((object)v).GetHashCode(), - IReadOnlyCollection (IReadOnlyCollection v) => v), - providerValueComparer: new ValueComparer>( - bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), - int (IReadOnlyCollection v) => ((object)v).GetHashCode(), - IReadOnlyCollection (IReadOnlyCollection v) => v), - clrType: typeof(IReadOnlyCollection), + uInt8ReadOnlyCollection.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var uInt8ReadOnlyCollectionElementType = uInt8ReadOnlyCollection.SetElementType(typeof(byte)); uInt8ReadOnlyCollectionElementType.TypeMapping = uInt8ReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -9498,27 +6703,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uri.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + uri.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + UriToStringConverter.Instance)); var uriToStringConverterProperty = runtimeEntityType.AddProperty( "UriToStringConverterProperty", @@ -9552,27 +6743,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uriToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + uriToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); var __id = runtimeEntityType.AddProperty( "__id", @@ -9590,20 +6767,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: -1, storeGenerationIndex: -1); - __id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + __id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); __id.AddAnnotation("Cosmos:PropertyName", "id"); @@ -9625,20 +6789,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: -1, storeGenerationIndex: 0); - __jObject.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - keyComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - providerValueComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - clrType: typeof(JObject)); + __jObject.TypeMapping = CosmosTypeMapping.Default; __jObject.AddAnnotation("Cosmos:PropertyName", ""); var key = runtimeEntityType.AddKey( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index 4fe5b38523f..47eb980ceab 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; @@ -52,20 +50,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - principalDerivedId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + principalDerivedId.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); @@ -84,27 +69,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: 1, storeGenerationIndex: 1); - principalDerivedAlternateId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)), + principalDerivedAlternateId.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: GuidToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)))); + GuidToStringConverter.Instance)); principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); principalDerivedAlternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); @@ -126,20 +97,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: 2, storeGenerationIndex: 2); - id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -175,20 +133,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - details.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + details.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var number = runtimeEntityType.AddProperty( @@ -223,20 +168,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + number.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); var refTypeEnumerable = runtimeEntityType.AddProperty( @@ -271,36 +203,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + refTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -337,36 +245,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + refTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -403,36 +287,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - clrType: typeof(DateTime[]), + valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -469,36 +329,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + valueTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -535,36 +371,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + valueTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -601,36 +413,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - providerValueComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - clrType: typeof(List), + valueTypeList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; @@ -653,20 +441,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 3, relationshipIndex: -1, storeGenerationIndex: 3); - __jObject.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - keyComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - providerValueComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - clrType: typeof(JObject)); + __jObject.TypeMapping = CosmosTypeMapping.Default; __jObject.AddAnnotation("Cosmos:PropertyName", ""); var context = runtimeEntityType.AddServiceProperty( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index ba87978f771..1caf90a63f0 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; @@ -54,20 +52,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - principalBaseId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + principalBaseId.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); @@ -87,27 +72,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: 1, storeGenerationIndex: 1); - principalBaseAlternateId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)), + principalBaseAlternateId.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: GuidToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)))); + GuidToStringConverter.Instance)); principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); principalBaseAlternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); @@ -144,20 +115,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - details.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + details.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var number = runtimeEntityType.AddProperty( @@ -193,20 +151,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + number.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); var refTypeEnumerable = runtimeEntityType.AddProperty( @@ -242,36 +187,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + refTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -309,36 +230,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + refTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -376,36 +273,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - clrType: typeof(DateTime[]), + valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -443,36 +316,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + valueTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -510,36 +359,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + valueTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -577,36 +402,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - providerValueComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - clrType: typeof(List), + valueTypeList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; @@ -630,20 +431,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: -1, storeGenerationIndex: 2); - __jObject.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - keyComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - providerValueComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - clrType: typeof(JObject)); + __jObject.TypeMapping = CosmosTypeMapping.Default; __jObject.AddAnnotation("Cosmos:PropertyName", ""); var context = runtimeEntityType.AddServiceProperty( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index 06643bad1a0..047e9dfcca6 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; @@ -72,24 +70,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var alternateId = runtimeEntityType.AddProperty( "AlternateId", @@ -124,22 +108,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 1, storeGenerationIndex: -1); - alternateId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)), + alternateId.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: GuidToStringConverter.Instance, jsonValueReaderWriter: JsonGuidReaderWriter.Instance); alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); alternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); @@ -160,20 +132,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: -1, storeGenerationIndex: -1); - type.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + type.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var enum1 = runtimeEntityType.AddProperty( @@ -207,27 +166,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum1.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (CompiledModelTestBase.AnEnum value) => ((int)value), - CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + enum1.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (CompiledModelTestBase.AnEnum value) => ((int)value), - CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum1.SetSentinelFromProviderValue(0); var enum2 = runtimeEntityType.AddProperty( @@ -262,29 +207,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum2.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (CompiledModelTestBase.AnEnum value) => ((int)value), - CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + enum2.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (CompiledModelTestBase.AnEnum value) => ((int)value), - CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); var flagsEnum1 = runtimeEntityType.AddProperty( "FlagsEnum1", @@ -317,27 +247,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum1.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), - CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + flagsEnum1.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), - CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum1.SetSentinelFromProviderValue(0); var flagsEnum2 = runtimeEntityType.AddProperty( @@ -372,27 +288,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum2.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), - CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + flagsEnum2.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), - CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum2.SetSentinelFromProviderValue(6); var refTypeEnumerable = runtimeEntityType.AddProperty( @@ -427,36 +329,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + refTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -493,36 +371,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + refTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -559,36 +413,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - clrType: typeof(DateTime[]), + valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -625,36 +455,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + valueTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -691,36 +497,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + valueTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -757,36 +539,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - providerValueComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - clrType: typeof(List), + valueTypeList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; @@ -807,20 +565,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: -1, storeGenerationIndex: -1); - __id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + __id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); __id.AddAnnotation("Cosmos:PropertyName", "id"); @@ -839,20 +584,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: -1, storeGenerationIndex: -1); - __jObject.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - keyComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - providerValueComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - clrType: typeof(JObject)); + __jObject.TypeMapping = CosmosTypeMapping.Default; __jObject.AddAnnotation("Cosmos:PropertyName", ""); var key = runtimeEntityType.AddKey( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index d9d7d3e8a99..adeac7a01b2 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; @@ -95,20 +93,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - derivedsId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + derivedsId.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); @@ -167,27 +152,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 1, storeGenerationIndex: 1); - derivedsAlternateId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)), + derivedsAlternateId.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: GuidToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)))); + GuidToStringConverter.Instance)); derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); var principalsId = runtimeEntityType.AddProperty( @@ -245,20 +216,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 2, storeGenerationIndex: 2); - principalsId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + principalsId.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); @@ -317,27 +275,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 3, storeGenerationIndex: 3); - principalsAlternateId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)), + principalsAlternateId.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: GuidToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)))); + GuidToStringConverter.Instance)); principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); var type = runtimeEntityType.AddProperty( @@ -372,20 +316,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - type.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + type.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var __id = runtimeEntityType.AddProperty( @@ -420,20 +351,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - __id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + __id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); __id.AddAnnotation("Cosmos:PropertyName", "id"); @@ -471,20 +389,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: 4); - __jObject.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - keyComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - providerValueComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - clrType: typeof(JObject)); + __jObject.TypeMapping = CosmosTypeMapping.Default; __jObject.AddAnnotation("Cosmos:PropertyName", ""); var rowid = runtimeEntityType.AddProperty( @@ -518,27 +423,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - rowid.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (byte[] v) => Convert.ToBase64String(v), - byte[] (string v) => Convert.FromBase64String(v)), + rowid.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + keyComparer: ValueComparer.DefaultWithStructuralComparisons, + providerValueComparer: DefaultValueComparer.Default, + converter: BytesToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (byte[] v) => Convert.ToBase64String(v), - byte[] (string v) => Convert.FromBase64String(v)))); + BytesToStringConverter.Instance)); var key = runtimeEntityType.AddKey( new[] { derivedsId, derivedsAlternateId, principalsId, principalsAlternateId }); diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalBaseEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalBaseEntityType.cs index 1ab863968a2..bd1f68fb156 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalBaseEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalBaseEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; @@ -73,24 +71,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var type = runtimeEntityType.AddProperty( "$type", @@ -108,20 +92,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: -1, storeGenerationIndex: -1); - type.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + type.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var enum1 = runtimeEntityType.AddProperty( @@ -155,23 +126,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum1.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + enum1.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum1.SetSentinelFromProviderValue(0); var enum2 = runtimeEntityType.AddProperty( @@ -206,25 +167,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum2.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + enum2.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); var flagsEnum1 = runtimeEntityType.AddProperty( "FlagsEnum1", @@ -257,23 +207,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum1.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + flagsEnum1.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum1.SetSentinelFromProviderValue(0); var flagsEnum2 = runtimeEntityType.AddProperty( @@ -307,23 +247,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum2.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + flagsEnum2.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum2.SetSentinelFromProviderValue(0); var principalBaseId = runtimeEntityType.AddProperty( @@ -341,24 +271,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: 1, storeGenerationIndex: 0); - principalBaseId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + principalBaseId.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); principalBaseId.SetComparer(new NullableValueComparer(principalBaseId.TypeMapping.Comparer)); - principalBaseId.SetKeyComparer(new NullableValueComparer(principalBaseId.TypeMapping.KeyComparer)); var refTypeEnumerable = runtimeEntityType.AddProperty( "RefTypeEnumerable", @@ -392,36 +308,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + refTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -458,36 +350,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + refTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -524,36 +392,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - clrType: typeof(DateTime[]), + valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -590,36 +434,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + valueTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -656,36 +476,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + valueTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -722,36 +518,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - providerValueComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - clrType: typeof(List), + valueTypeList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; @@ -772,20 +544,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: -1, storeGenerationIndex: -1); - __id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + __id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); __id.AddAnnotation("Cosmos:PropertyName", "id"); @@ -804,20 +563,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 3, relationshipIndex: -1, storeGenerationIndex: -1); - __jObject.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - keyComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - providerValueComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - clrType: typeof(JObject)); + __jObject.TypeMapping = CosmosTypeMapping.Default; __jObject.AddAnnotation("Cosmos:PropertyName", ""); OwnedComplexProperty.Create(runtimeEntityType); @@ -920,20 +666,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - details.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + details.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); details.AddAnnotation("foo", "bar"); @@ -981,20 +714,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + number.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); var refTypeEnumerable = complexType.AddProperty( @@ -1041,36 +761,12 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + refTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -1119,36 +815,12 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + refTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -1197,36 +869,12 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - clrType: typeof(DateTime[]), + valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -1275,36 +923,12 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + valueTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -1353,36 +977,12 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + valueTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -1431,36 +1031,12 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - providerValueComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - clrType: typeof(List), + valueTypeList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; @@ -1567,23 +1143,13 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - alternateId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)), + alternateId.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: GuidToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); + GuidToStringConverter.Instance)); alternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var enum1 = complexType.AddProperty( @@ -1631,23 +1197,13 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum1.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + enum1.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum1.SetSentinelFromProviderValue(0); var enum2 = complexType.AddProperty( @@ -1696,25 +1252,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum2.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + enum2.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); var flagsEnum1 = complexType.AddProperty( "FlagsEnum1", @@ -1761,23 +1306,13 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum1.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + flagsEnum1.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum1.SetSentinelFromProviderValue(0); var flagsEnum2 = complexType.AddProperty( @@ -1825,23 +1360,13 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum2.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + flagsEnum2.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum2.SetSentinelFromProviderValue(0); var id = complexType.AddProperty( @@ -1890,23 +1415,9 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var refTypeEnumerable = complexType.AddProperty( "RefTypeEnumerable", @@ -1954,36 +1465,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + refTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -2034,36 +1521,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + refTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -2114,36 +1577,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - clrType: typeof(DateTime[]), + valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -2194,36 +1633,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + valueTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -2274,36 +1689,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + valueTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -2354,36 +1745,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - providerValueComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - clrType: typeof(List), + valueTypeList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalDerivedEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalDerivedEntityType.cs index cbe7e7aac5b..77d1f6671c4 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalDerivedEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalDerivedEntityType.cs @@ -2,7 +2,6 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; @@ -125,23 +124,9 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); return complexProperty; } @@ -251,20 +236,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - details.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + details.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); details.AddAnnotation("foo", "bar"); @@ -322,20 +294,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + number.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); var refTypeEnumerable = complexType.AddProperty( @@ -392,36 +351,12 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + refTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -480,36 +415,12 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + refTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -568,36 +479,12 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - clrType: typeof(DateTime[]), + valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -656,36 +543,12 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + valueTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -744,36 +607,12 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + valueTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -832,36 +671,12 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - providerValueComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - clrType: typeof(List), + valueTypeList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; @@ -988,23 +803,13 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - alternateId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)), + alternateId.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: GuidToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); + GuidToStringConverter.Instance)); alternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var enum1 = complexType.AddProperty( @@ -1062,23 +867,13 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum1.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + enum1.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum1.SetSentinelFromProviderValue(0); var enum2 = complexType.AddProperty( @@ -1137,25 +932,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum2.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + enum2.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); var flagsEnum1 = complexType.AddProperty( "FlagsEnum1", @@ -1212,23 +996,13 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum1.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + flagsEnum1.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum1.SetSentinelFromProviderValue(0); var flagsEnum2 = complexType.AddProperty( @@ -1286,23 +1060,13 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum2.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + flagsEnum2.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum2.SetSentinelFromProviderValue(0); var id = complexType.AddProperty( @@ -1361,23 +1125,9 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var refTypeEnumerable = complexType.AddProperty( "RefTypeEnumerable", @@ -1435,36 +1185,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + refTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -1525,36 +1251,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + refTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -1615,36 +1317,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (DateTime[] v1, DateTime[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (DateTime[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - DateTime[] (DateTime[] source) => source.ToArray()), - clrType: typeof(DateTime[]), + valueTypeArray.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -1705,36 +1383,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - providerValueComparer: new ValueComparer>( - bool (IEnumerable v1, IEnumerable v2) => object.Equals(v1, v2), - int (IEnumerable v) => ((object)v).GetHashCode(), - IEnumerable (IEnumerable v) => v), - clrType: typeof(IEnumerable), + valueTypeEnumerable.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -1795,36 +1449,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - providerValueComparer: new ValueComparer>( - bool (IList v1, IList v2) => object.Equals(v1, v2), - int (IList v) => ((object)v).GetHashCode(), - IList (IList v) => v), - clrType: typeof(IList), + valueTypeIList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -1885,36 +1515,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - providerValueComparer: new ValueComparer>( - bool (List v1, List v2) => object.Equals(v1, v2), - int (List v) => ((object)v).GetHashCode(), - List (List v) => v), - clrType: typeof(List), + valueTypeList.TypeMapping = CosmosTypeMapping>.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + keyComparer: ValueComparer>.Default, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/Cosmos_model_with_index_types/IndexedDataEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/Cosmos_model_with_index_types/IndexedDataEntityType.cs index 11be89f211d..386ca8b5bef 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/Cosmos_model_with_index_types/IndexedDataEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/Cosmos_model_with_index_types/IndexedDataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.Azure.Cosmos; using Microsoft.EntityFrameworkCore.ChangeTracking; @@ -71,20 +69,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -120,20 +105,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 1, storeGenerationIndex: -1); - partitionId.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + partitionId.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); partitionId.SetCurrentValueComparer(new EntryCurrentValueComparer(partitionId)); @@ -153,20 +125,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: -1, storeGenerationIndex: -1); - type.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + type.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var category = runtimeEntityType.AddProperty( @@ -200,20 +159,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - category.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + category.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var description = runtimeEntityType.AddProperty( @@ -247,20 +193,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - description.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + description.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); description.AddAnnotation("Cosmos:FullTextSearchLanguage", null); description.AddAnnotation("Cosmos:IsFullTextSearchEnabled", true); @@ -301,14 +234,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bool (ReadOnlyMemory v1, ReadOnlyMemory v2) => v1.Equals(v2), int (ReadOnlyMemory v) => ((object)v).GetHashCode(), ReadOnlyMemory (ReadOnlyMemory v) => v), - keyComparer: new ValueComparer>( - bool (ReadOnlyMemory v1, ReadOnlyMemory v2) => v1.Equals(v2), - int (ReadOnlyMemory v) => ((object)v).GetHashCode(), - ReadOnlyMemory (ReadOnlyMemory v) => v), - providerValueComparer: new ValueComparer( - bool (float[] v1, float[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (float[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - float[] (float[] source) => source.ToArray()), + keyComparer: ValueComparer>.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, converter: new ValueConverter, float[]>(float[] (ReadOnlyMemory v) => ReadOnlyMemoryConverter.ToArray(v), ReadOnlyMemory (float[] v) => ReadOnlyMemoryConverter.ToMemory(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter, IEnumerable>( new JsonCollectionOfStructsReaderWriter( @@ -349,20 +276,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - notes.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + notes.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var region = runtimeEntityType.AddProperty( @@ -396,20 +310,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - region.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + region.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var __id = runtimeEntityType.AddProperty( @@ -428,20 +329,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: -1, storeGenerationIndex: -1); - __id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + __id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); __id.AddAnnotation("Cosmos:PropertyName", "id"); @@ -463,20 +351,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: -1, storeGenerationIndex: 0); - __jObject.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - keyComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - providerValueComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - clrType: typeof(JObject)); + __jObject.TypeMapping = CosmosTypeMapping.Default; __jObject.AddAnnotation("Cosmos:PropertyName", ""); var key = runtimeEntityType.AddKey( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs index a4efb56e17a..ed78bb10e2a 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs @@ -6,6 +6,7 @@ using System.Reflection; using System.Text; using Microsoft.EntityFrameworkCore.ChangeTracking; +using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; using Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal; using Microsoft.EntityFrameworkCore.Cosmos.ValueGeneration.Internal; using Microsoft.EntityFrameworkCore.Infrastructure; @@ -83,19 +84,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas typeof(bool), propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolToStringConverterProperty", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); - boolToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + boolToStringConverterProperty.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (bool v) => ((string)((v ? "B" : "A"))), bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs index 84ccae895e1..6497ceb053b 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs @@ -66,20 +66,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -99,20 +86,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: -1, storeGenerationIndex: -1); - type.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + type.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var data = runtimeEntityType.AddProperty( @@ -147,20 +121,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - data.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + data.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var __id = runtimeEntityType.AddProperty( @@ -179,20 +140,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: -1, storeGenerationIndex: -1); - __id.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + __id.TypeMapping = CosmosTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); __id.AddAnnotation("Cosmos:PropertyName", "id"); @@ -214,20 +162,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: -1, storeGenerationIndex: 0); - __jObject.TypeMapping = CosmosTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - keyComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - providerValueComparer: new ValueComparer( - bool (JObject v1, JObject v2) => object.Equals(v1, v2), - int (JObject v) => ((object)v).GetHashCode(), - JObject (JObject v) => v), - clrType: typeof(JObject)); + __jObject.TypeMapping = CosmosTypeMapping.Default; __jObject.AddAnnotation("Cosmos:PropertyName", ""); var key = runtimeEntityType.AddKey( diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs index 41b05d2f3a1..27d6467e72c 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs @@ -51,20 +51,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - principalId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + principalId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); @@ -84,20 +71,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: 1, storeGenerationIndex: 1); - principalAlternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + principalAlternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance); principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); @@ -118,20 +92,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: -1, storeGenerationIndex: -1); - enumDiscriminator.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - clrType: typeof(CompiledModelTestBase.Enum1), + enumDiscriminator.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var id = runtimeEntityType.AddProperty( @@ -166,23 +127,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var key = runtimeEntityType.AddKey( new[] { principalId, principalAlternateId }); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs index 482616bfbaf..cf7baef30fd 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs @@ -63,20 +63,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - data.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + data.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var money = runtimeEntityType.AddProperty( @@ -96,20 +83,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 3, relationshipIndex: -1, storeGenerationIndex: -1); - money.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - clrType: typeof(decimal), + money.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDecimalReaderWriter.Instance); return runtimeEntityType; diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs index dc75451b8af..2dabf3da20e 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs @@ -1,9 +1,7 @@ // using System; -using System.Collections; using System.Collections.Generic; using System.Globalization; -using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Reflection; @@ -70,27 +68,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.ManyTypesId v1, CompiledModelTestBase.ManyTypesId v2) => v1.Equals(v2), - int (CompiledModelTestBase.ManyTypesId v) => ((object)v).GetHashCode(), - CompiledModelTestBase.ManyTypesId (CompiledModelTestBase.ManyTypesId v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.ManyTypesId v1, CompiledModelTestBase.ManyTypesId v2) => v1.Equals(v2), - int (CompiledModelTestBase.ManyTypesId v) => ((object)v).GetHashCode(), - CompiledModelTestBase.ManyTypesId (CompiledModelTestBase.ManyTypesId v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (CompiledModelTestBase.ManyTypesId v) => v.Id, - CompiledModelTestBase.ManyTypesId (int v) => new CompiledModelTestBase.ManyTypesId(v)), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(int (CompiledModelTestBase.ManyTypesId v) => v.Id, CompiledModelTestBase.ManyTypesId (int v) => new CompiledModelTestBase.ManyTypesId(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (CompiledModelTestBase.ManyTypesId v) => v.Id, - CompiledModelTestBase.ManyTypesId (int v) => new CompiledModelTestBase.ManyTypesId(v)))); + new ValueConverter(int (CompiledModelTestBase.ManyTypesId v) => v.Id, CompiledModelTestBase.ManyTypesId (int v) => new CompiledModelTestBase.ManyTypesId(v)))); id.SetCurrentValueComparer(new CurrentProviderValueComparer(id)); id.SetSentinelFromProviderValue(0); @@ -126,20 +110,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @bool.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + @bool.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance); var boolArray = runtimeEntityType.AddProperty( @@ -173,37 +144,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - boolArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + boolArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance)); var boolArrayElementType = boolArray.SetElementType(typeof(bool)); boolArrayElementType.TypeMapping = boolArray.TypeMapping.ElementTypeMapping; @@ -239,56 +187,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - boolNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + boolNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance))); var boolNestedCollectionElementType = boolNestedCollection.SetElementType(typeof(bool[])); boolNestedCollectionElementType.TypeMapping = boolNestedCollection.TypeMapping.ElementTypeMapping; @@ -324,37 +239,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - boolReadOnlyCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, bool>(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ListOfValueTypesComparer, bool>(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + boolReadOnlyCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, bool>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, bool>( JsonBoolReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, bool>( JsonBoolReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance)); var boolReadOnlyCollectionElementType = boolReadOnlyCollection.SetElementType(typeof(bool)); boolReadOnlyCollectionElementType.TypeMapping = boolReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -390,27 +282,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - boolToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (bool v) => ((string)((v ? "B" : "A"))), - bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))), + boolToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (bool v) => ((string)((v ? "B" : "A"))), bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (bool v) => ((string)((v ? "B" : "A"))), - bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))))); + new ValueConverter(string (bool v) => ((string)((v ? "B" : "A"))), bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))))); boolToStringConverterProperty.SetSentinelFromProviderValue("A"); var boolToTwoValuesConverterProperty = runtimeEntityType.AddProperty( @@ -444,27 +322,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - boolToTwoValuesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter( - byte (bool v) => ((byte)((v ? 1 : 0))), - bool (byte v) => v == 1), + boolToTwoValuesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(byte (bool v) => ((byte)((v ? 1 : 0))), bool (byte v) => v == 1), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter( - byte (bool v) => ((byte)((v ? 1 : 0))), - bool (byte v) => v == 1))); + new ValueConverter(byte (bool v) => ((byte)((v ? 1 : 0))), bool (byte v) => v == 1))); boolToTwoValuesConverterProperty.SetSentinelFromProviderValue((byte)0); var boolToZeroOneConverterProperty = runtimeEntityType.AddProperty( @@ -499,27 +363,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - boolToZeroOneConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter( - short (bool v) => ((short)((v ? 1 : 0))), - bool (short v) => v == 1), + boolToZeroOneConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(short (bool v) => ((short)((v ? 1 : 0))), bool (short v) => v == 1), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter( - short (bool v) => ((short)((v ? 1 : 0))), - bool (short v) => v == 1))); + new ValueConverter(short (bool v) => ((short)((v ? 1 : 0))), bool (short v) => v == 1))); boolToZeroOneConverterProperty.SetSentinelFromProviderValue((short)0); var bytes = runtimeEntityType.AddProperty( @@ -553,20 +403,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - bytes.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - clrType: typeof(byte[]), + bytes.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteArrayReaderWriter.Instance); var bytesArray = runtimeEntityType.AddProperty( @@ -600,37 +437,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - bytesArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + bytesArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - clrType: typeof(byte[]), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteArrayReaderWriter.Instance)); var bytesArrayElementType = bytesArray.SetElementType(typeof(byte[])); bytesArrayElementType.TypeMapping = bytesArray.TypeMapping.ElementTypeMapping; @@ -666,56 +480,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - bytesNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + bytesNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(ValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - clrType: typeof(byte[]), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteArrayReaderWriter.Instance))); var bytesNestedCollectionElementType = bytesNestedCollection.SetElementType(typeof(byte[][])); bytesNestedCollectionElementType.TypeMapping = bytesNestedCollection.TypeMapping.ElementTypeMapping; @@ -753,27 +534,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - bytesToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (byte[] v) => Convert.ToBase64String(v), - byte[] (string v) => Convert.FromBase64String(v)), + bytesToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + keyComparer: ValueComparer.DefaultWithStructuralComparisons, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (byte[] v) => Convert.ToBase64String(v), byte[] (string v) => Convert.FromBase64String(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (byte[] v) => Convert.ToBase64String(v), - byte[] (string v) => Convert.FromBase64String(v)))); + new ValueConverter(string (byte[] v) => Convert.ToBase64String(v), byte[] (string v) => Convert.FromBase64String(v)))); var castingConverterProperty = runtimeEntityType.AddProperty( "CastingConverterProperty", @@ -807,27 +575,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - castingConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - converter: new ValueConverter( - decimal (int v) => ((decimal)v), - int (decimal v) => ((int)v)), + castingConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(decimal (int v) => ((decimal)v), int (decimal v) => ((int)v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter( - decimal (int v) => ((decimal)v), - int (decimal v) => ((int)v)))); + new ValueConverter(decimal (int v) => ((decimal)v), int (decimal v) => ((int)v)))); castingConverterProperty.SetSentinelFromProviderValue(0m); var @char = runtimeEntityType.AddProperty( @@ -862,20 +616,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @char.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - clrType: typeof(char), + @char.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonCharReaderWriter.Instance); var charArray = runtimeEntityType.AddProperty( @@ -909,37 +650,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - charArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + charArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - clrType: typeof(char), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonCharReaderWriter.Instance)); var charArrayElementType = charArray.SetElementType(typeof(char)); charArrayElementType.TypeMapping = charArray.TypeMapping.ElementTypeMapping; @@ -975,56 +693,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - charNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + charNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - clrType: typeof(char), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonCharReaderWriter.Instance))); var charNestedCollectionElementType = charNestedCollection.SetElementType(typeof(char[])); charNestedCollectionElementType.TypeMapping = charNestedCollection.TypeMapping.ElementTypeMapping; @@ -1061,27 +746,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - charToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), - char (string v) => (v.Length < 1 ? '\0' : v[0])), + charToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), - char (string v) => (v.Length < 1 ? '\0' : v[0])))); + new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])))); charToStringConverterProperty.SetSentinelFromProviderValue("\0"); var dateOnly = runtimeEntityType.AddProperty( @@ -1116,20 +787,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateOnly.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - clrType: typeof(DateOnly), + dateOnly.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateOnlyReaderWriter.Instance); var dateOnlyArray = runtimeEntityType.AddProperty( @@ -1163,37 +821,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateOnlyArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + dateOnlyArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateOnlyReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateOnlyReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - clrType: typeof(DateOnly), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateOnlyReaderWriter.Instance)); var dateOnlyArrayElementType = dateOnlyArray.SetElementType(typeof(DateOnly)); dateOnlyArrayElementType.TypeMapping = dateOnlyArray.TypeMapping.ElementTypeMapping; @@ -1230,27 +865,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateOnlyToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd"), - DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)), + dateOnlyToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd"), DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd"), - DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)))); + new ValueConverter(string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd"), DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)))); dateOnlyToStringConverterProperty.SetSentinelFromProviderValue("0001-01-01"); var dateTime = runtimeEntityType.AddProperty( @@ -1285,20 +906,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTime.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + dateTime.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance); var dateTimeArray = runtimeEntityType.AddProperty( @@ -1332,37 +940,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + dateTimeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var dateTimeArrayElementType = dateTimeArray.SetElementType(typeof(DateTime)); dateTimeArrayElementType.TypeMapping = dateTimeArray.TypeMapping.ElementTypeMapping; @@ -1399,27 +984,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeOffsetToBinaryConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter( - long (DateTimeOffset v) => DateTimeOffsetToBinaryConverter.ToLong(v), - DateTimeOffset (long v) => DateTimeOffsetToBinaryConverter.ToDateTimeOffset(v)), + dateTimeOffsetToBinaryConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(long (DateTimeOffset v) => DateTimeOffsetToBinaryConverter.ToLong(v), DateTimeOffset (long v) => DateTimeOffsetToBinaryConverter.ToDateTimeOffset(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter( - long (DateTimeOffset v) => DateTimeOffsetToBinaryConverter.ToLong(v), - DateTimeOffset (long v) => DateTimeOffsetToBinaryConverter.ToDateTimeOffset(v)))); + new ValueConverter(long (DateTimeOffset v) => DateTimeOffsetToBinaryConverter.ToLong(v), DateTimeOffset (long v) => DateTimeOffsetToBinaryConverter.ToDateTimeOffset(v)))); dateTimeOffsetToBinaryConverterProperty.SetSentinelFromProviderValue(0L); var dateTimeOffsetToBytesConverterProperty = runtimeEntityType.AddProperty( @@ -1454,27 +1025,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeOffsetToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - converter: new ValueConverter( - byte[] (DateTimeOffset v) => DateTimeOffsetToBytesConverter.ToBytes(v), - DateTimeOffset (byte[] v) => DateTimeOffsetToBytesConverter.FromBytes(v)), + dateTimeOffsetToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, + converter: new ValueConverter(byte[] (DateTimeOffset v) => DateTimeOffsetToBytesConverter.ToBytes(v), DateTimeOffset (byte[] v) => DateTimeOffsetToBytesConverter.FromBytes(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteArrayReaderWriter.Instance, - new ValueConverter( - byte[] (DateTimeOffset v) => DateTimeOffsetToBytesConverter.ToBytes(v), - DateTimeOffset (byte[] v) => DateTimeOffsetToBytesConverter.FromBytes(v)))); + new ValueConverter(byte[] (DateTimeOffset v) => DateTimeOffsetToBytesConverter.ToBytes(v), DateTimeOffset (byte[] v) => DateTimeOffsetToBytesConverter.FromBytes(v)))); dateTimeOffsetToBytesConverterProperty.SetSentinelFromProviderValue(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }); var dateTimeOffsetToStringConverterProperty = runtimeEntityType.AddProperty( @@ -1509,27 +1066,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeOffsetToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz"), - DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture)), + dateTimeOffsetToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz"), DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz"), - DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture)))); + new ValueConverter(string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz"), DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture)))); dateTimeOffsetToStringConverterProperty.SetSentinelFromProviderValue("0001-01-01 00:00:00+00:00"); var dateTimeToBinaryConverterProperty = runtimeEntityType.AddProperty( @@ -1564,27 +1107,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeToBinaryConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter( - long (DateTime v) => v.ToBinary(), - DateTime (long v) => DateTime.FromBinary(v)), + dateTimeToBinaryConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(long (DateTime v) => v.ToBinary(), DateTime (long v) => DateTime.FromBinary(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter( - long (DateTime v) => v.ToBinary(), - DateTime (long v) => DateTime.FromBinary(v)))); + new ValueConverter(long (DateTime v) => v.ToBinary(), DateTime (long v) => DateTime.FromBinary(v)))); dateTimeToBinaryConverterProperty.SetSentinelFromProviderValue(0L); var dateTimeToStringConverterProperty = runtimeEntityType.AddProperty( @@ -1619,27 +1148,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF"), - DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture)), + dateTimeToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF"), DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF"), - DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture)))); + new ValueConverter(string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF"), DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture)))); dateTimeToStringConverterProperty.SetSentinelFromProviderValue("0001-01-01 00:00:00"); var dateTimeToTicksConverterProperty = runtimeEntityType.AddProperty( @@ -1674,20 +1189,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeToTicksConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + dateTimeToTicksConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance); var @decimal = runtimeEntityType.AddProperty( @@ -1722,20 +1224,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @decimal.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - clrType: typeof(decimal), + @decimal.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDecimalReaderWriter.Instance); var decimalArray = runtimeEntityType.AddProperty( @@ -1769,37 +1258,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - decimalArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + decimalArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDecimalReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDecimalReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - clrType: typeof(decimal), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDecimalReaderWriter.Instance)); var decimalArrayElementType = decimalArray.SetElementType(typeof(decimal)); decimalArrayElementType.TypeMapping = decimalArray.TypeMapping.ElementTypeMapping; @@ -1836,27 +1302,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - decimalNumberToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - converter: new ValueConverter( - byte[] (decimal v) => NumberToBytesConverter.DecimalToBytes(v), - decimal (byte[] v) => (v == null ? 0M : NumberToBytesConverter.BytesToDecimal(v))), + decimalNumberToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, + converter: new ValueConverter(byte[] (decimal v) => NumberToBytesConverter.DecimalToBytes(v), decimal (byte[] v) => (v == null ? 0M : NumberToBytesConverter.BytesToDecimal(v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteArrayReaderWriter.Instance, - new ValueConverter( - byte[] (decimal v) => NumberToBytesConverter.DecimalToBytes(v), - decimal (byte[] v) => (v == null ? 0M : NumberToBytesConverter.BytesToDecimal(v))))); + new ValueConverter(byte[] (decimal v) => NumberToBytesConverter.DecimalToBytes(v), decimal (byte[] v) => (v == null ? 0M : NumberToBytesConverter.BytesToDecimal(v))))); decimalNumberToBytesConverterProperty.SetSentinelFromProviderValue(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }); var decimalNumberToStringConverterProperty = runtimeEntityType.AddProperty( @@ -1891,27 +1343,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - decimalNumberToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), - decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), + decimalNumberToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), - decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); + new ValueConverter(string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); decimalNumberToStringConverterProperty.SetSentinelFromProviderValue("0"); var @double = runtimeEntityType.AddProperty( @@ -1946,20 +1384,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @double.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - clrType: typeof(double), + @double.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDoubleReaderWriter.Instance); var doubleArray = runtimeEntityType.AddProperty( @@ -1993,37 +1418,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - doubleArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + doubleArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultDoubleValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDoubleReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDoubleReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - clrType: typeof(double), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDoubleReaderWriter.Instance)); var doubleArrayElementType = doubleArray.SetElementType(typeof(double)); doubleArrayElementType.TypeMapping = doubleArray.TypeMapping.ElementTypeMapping; @@ -2060,27 +1462,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - doubleNumberToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - converter: new ValueConverter( - byte[] (double v) => NumberToBytesConverter.ReverseLong(BitConverter.GetBytes(v)), - double (byte[] v) => (v == null ? 0D : BitConverter.ToDouble(NumberToBytesConverter.ReverseLong(v), 0))), + doubleNumberToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultDoubleValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, + converter: new ValueConverter(byte[] (double v) => NumberToBytesConverter.ReverseLong(BitConverter.GetBytes(v)), double (byte[] v) => (v == null ? 0D : BitConverter.ToDouble(NumberToBytesConverter.ReverseLong(v), 0))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteArrayReaderWriter.Instance, - new ValueConverter( - byte[] (double v) => NumberToBytesConverter.ReverseLong(BitConverter.GetBytes(v)), - double (byte[] v) => (v == null ? 0D : BitConverter.ToDouble(NumberToBytesConverter.ReverseLong(v), 0))))); + new ValueConverter(byte[] (double v) => NumberToBytesConverter.ReverseLong(BitConverter.GetBytes(v)), double (byte[] v) => (v == null ? 0D : BitConverter.ToDouble(NumberToBytesConverter.ReverseLong(v), 0))))); doubleNumberToBytesConverterProperty.SetSentinelFromProviderValue(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }); var doubleNumberToStringConverterProperty = runtimeEntityType.AddProperty( @@ -2115,27 +1503,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - doubleNumberToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v)), - double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), + doubleNumberToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultDoubleValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v)), double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v)), - double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); + new ValueConverter(string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v)), double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); doubleNumberToStringConverterProperty.SetSentinelFromProviderValue("0"); var enum16 = runtimeEntityType.AddProperty( @@ -2170,20 +1544,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum16.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - clrType: typeof(CompiledModelTestBase.Enum16), + enum16.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var enum16Array = runtimeEntityType.AddProperty( @@ -2217,37 +1578,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - clrType: typeof(CompiledModelTestBase.Enum16), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var enum16ArrayElementType = enum16Array.SetElementType(typeof(CompiledModelTestBase.Enum16)); enum16ArrayElementType.TypeMapping = enum16Array.TypeMapping.ElementTypeMapping; @@ -2284,27 +1622,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum16AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + enum16AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum16AsString.SetSentinelFromProviderValue("Default"); var enum16AsStringArray = runtimeEntityType.AddProperty( @@ -2338,52 +1662,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum16AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum16AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum16AsStringArrayElementType = enum16AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum16), providerClrType: typeof(string)); enum16AsStringArrayElementType.TypeMapping = enum16AsStringArray.TypeMapping.ElementTypeMapping; @@ -2419,52 +1715,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum16AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum16AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum16AsStringCollectionElementType = enum16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum16), providerClrType: typeof(string)); enum16AsStringCollectionElementType.TypeMapping = enum16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -2500,37 +1768,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum16Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum16Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - clrType: typeof(CompiledModelTestBase.Enum16), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var enum16CollectionElementType = enum16Collection.SetElementType(typeof(CompiledModelTestBase.Enum16)); enum16CollectionElementType.TypeMapping = enum16Collection.TypeMapping.ElementTypeMapping; @@ -2567,20 +1812,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum32.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - clrType: typeof(CompiledModelTestBase.Enum32), + enum32.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var enum32Array = runtimeEntityType.AddProperty( @@ -2614,37 +1846,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - clrType: typeof(CompiledModelTestBase.Enum32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var enum32ArrayElementType = enum32Array.SetElementType(typeof(CompiledModelTestBase.Enum32)); enum32ArrayElementType.TypeMapping = enum32Array.TypeMapping.ElementTypeMapping; @@ -2681,27 +1890,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum32AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + enum32AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum32AsString.SetSentinelFromProviderValue("Default"); var enum32AsStringArray = runtimeEntityType.AddProperty( @@ -2735,52 +1930,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum32AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum32AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum32AsStringArrayElementType = enum32AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum32), providerClrType: typeof(string)); enum32AsStringArrayElementType.TypeMapping = enum32AsStringArray.TypeMapping.ElementTypeMapping; @@ -2816,52 +1983,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum32AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum32AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum32AsStringCollectionElementType = enum32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum32), providerClrType: typeof(string)); enum32AsStringCollectionElementType.TypeMapping = enum32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -2897,37 +2036,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum32Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum32Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - clrType: typeof(CompiledModelTestBase.Enum32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var enum32CollectionElementType = enum32Collection.SetElementType(typeof(CompiledModelTestBase.Enum32)); enum32CollectionElementType.TypeMapping = enum32Collection.TypeMapping.ElementTypeMapping; @@ -2963,19 +2079,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum32NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer[][], List[]>(new ConvertingValueComparer[], object>(new ListOfReferenceTypesComparer[], List>(new ConvertingValueComparer, IEnumerable>(new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)))))), - keyComparer: new ListOfReferenceTypesComparer[][], List[]>(new ConvertingValueComparer[], object>(new ListOfReferenceTypesComparer[], List>(new ConvertingValueComparer, IEnumerable>(new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum32NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer[][], List[]>(new ConvertingValueComparer[], object>(new ListOfReferenceTypesComparer[], List>(new ConvertingValueComparer, IEnumerable>(new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default))))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter[]>(new JsonCollectionOfReferencesReaderWriter[][], List[]>( new JsonCollectionOfReferencesReaderWriter[], List>( new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( @@ -2984,56 +2090,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas new JsonCollectionOfReferencesReaderWriter[], List>( new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( JsonSignedEnumReaderWriter.Instance))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer[], List>(new ConvertingValueComparer, IEnumerable>(new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)))), - keyComparer: new ListOfReferenceTypesComparer[], List>(new ConvertingValueComparer, IEnumerable>(new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer[], List>(new ConvertingValueComparer, IEnumerable>(new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter>(new JsonCollectionOfReferencesReaderWriter[], List>( new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( JsonSignedEnumReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter[], List>( new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( JsonSignedEnumReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - clrType: typeof(CompiledModelTestBase.Enum32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)))); var enum32NestedCollectionElementType = enum32NestedCollection.SetElementType(typeof(List[])); enum32NestedCollectionElementType.TypeMapping = enum32NestedCollection.TypeMapping.ElementTypeMapping; @@ -3070,20 +2143,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum64.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - clrType: typeof(CompiledModelTestBase.Enum64), + enum64.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var enum64Array = runtimeEntityType.AddProperty( @@ -3117,37 +2177,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - clrType: typeof(CompiledModelTestBase.Enum64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var enum64ArrayElementType = enum64Array.SetElementType(typeof(CompiledModelTestBase.Enum64)); enum64ArrayElementType.TypeMapping = enum64Array.TypeMapping.ElementTypeMapping; @@ -3184,27 +2221,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum64AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + enum64AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum64AsString.SetSentinelFromProviderValue("Default"); var enum64AsStringArray = runtimeEntityType.AddProperty( @@ -3238,52 +2261,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum64AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum64AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum64AsStringArrayElementType = enum64AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum64), providerClrType: typeof(string)); enum64AsStringArrayElementType.TypeMapping = enum64AsStringArray.TypeMapping.ElementTypeMapping; @@ -3319,52 +2314,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum64AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum64AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum64AsStringCollectionElementType = enum64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum64), providerClrType: typeof(string)); enum64AsStringCollectionElementType.TypeMapping = enum64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -3400,37 +2367,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum64Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum64Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - clrType: typeof(CompiledModelTestBase.Enum64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var enum64CollectionElementType = enum64Collection.SetElementType(typeof(CompiledModelTestBase.Enum64)); enum64CollectionElementType.TypeMapping = enum64Collection.TypeMapping.ElementTypeMapping; @@ -3467,20 +2411,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum8.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - clrType: typeof(CompiledModelTestBase.Enum8), + enum8.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var enum8Array = runtimeEntityType.AddProperty( @@ -3514,37 +2445,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - clrType: typeof(CompiledModelTestBase.Enum8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var enum8ArrayElementType = enum8Array.SetElementType(typeof(CompiledModelTestBase.Enum8)); enum8ArrayElementType.TypeMapping = enum8Array.TypeMapping.ElementTypeMapping; @@ -3581,27 +2489,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum8AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + enum8AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum8AsString.SetSentinelFromProviderValue("Default"); var enum8AsStringArray = runtimeEntityType.AddProperty( @@ -3635,52 +2529,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum8AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum8AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum8AsStringArrayElementType = enum8AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum8), providerClrType: typeof(string)); enum8AsStringArrayElementType.TypeMapping = enum8AsStringArray.TypeMapping.ElementTypeMapping; @@ -3716,52 +2582,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum8AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum8AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum8AsStringCollectionElementType = enum8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum8), providerClrType: typeof(string)); enum8AsStringCollectionElementType.TypeMapping = enum8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -3797,37 +2635,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum8Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum8Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - clrType: typeof(CompiledModelTestBase.Enum8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var enum8CollectionElementType = enum8Collection.SetElementType(typeof(CompiledModelTestBase.Enum8)); enum8CollectionElementType.TypeMapping = enum8Collection.TypeMapping.ElementTypeMapping; @@ -3863,56 +2678,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum8NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enum8NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(ValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonSignedEnumReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - clrType: typeof(CompiledModelTestBase.Enum8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance))); var enum8NestedCollectionElementType = enum8NestedCollection.SetElementType(typeof(CompiledModelTestBase.Enum8[])); enum8NestedCollectionElementType.TypeMapping = enum8NestedCollection.TypeMapping.ElementTypeMapping; @@ -3949,27 +2731,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumToNumberConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (CompiledModelTestBase.Enum32 value) => ((int)value), - CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + enumToNumberConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (CompiledModelTestBase.Enum32 value) => ((int)value), - CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); enumToNumberConverterProperty.SetSentinelFromProviderValue(0); var enumToStringConverterProperty = runtimeEntityType.AddProperty( @@ -4004,27 +2772,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + enumToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), - CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))); enumToStringConverterProperty.SetSentinelFromProviderValue("Default"); var enumU16 = runtimeEntityType.AddProperty( @@ -4059,20 +2813,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU16.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU16), + enumU16.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance); var enumU16Array = runtimeEntityType.AddProperty( @@ -4106,37 +2847,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU16), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var enumU16ArrayElementType = enumU16Array.SetElementType(typeof(CompiledModelTestBase.EnumU16)); enumU16ArrayElementType.TypeMapping = enumU16Array.TypeMapping.ElementTypeMapping; @@ -4173,27 +2891,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU16AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + enumU16AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU16AsString.SetSentinelFromProviderValue("Min"); var enumU16AsStringArray = runtimeEntityType.AddProperty( @@ -4227,52 +2931,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU16AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU16AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU16AsStringArrayElementType = enumU16AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU16), providerClrType: typeof(string)); enumU16AsStringArrayElementType.TypeMapping = enumU16AsStringArray.TypeMapping.ElementTypeMapping; @@ -4308,52 +2984,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU16AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU16AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU16AsStringCollectionElementType = enumU16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU16), providerClrType: typeof(string)); enumU16AsStringCollectionElementType.TypeMapping = enumU16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -4389,37 +3037,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU16Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU16Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU16), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var enumU16CollectionElementType = enumU16Collection.SetElementType(typeof(CompiledModelTestBase.EnumU16)); enumU16CollectionElementType.TypeMapping = enumU16Collection.TypeMapping.ElementTypeMapping; @@ -4456,20 +3081,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU32.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU32), + enumU32.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance); var enumU32Array = runtimeEntityType.AddProperty( @@ -4503,37 +3115,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var enumU32ArrayElementType = enumU32Array.SetElementType(typeof(CompiledModelTestBase.EnumU32)); enumU32ArrayElementType.TypeMapping = enumU32Array.TypeMapping.ElementTypeMapping; @@ -4570,27 +3159,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU32AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + enumU32AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU32AsString.SetSentinelFromProviderValue("Min"); var enumU32AsStringArray = runtimeEntityType.AddProperty( @@ -4624,52 +3199,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU32AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU32AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU32AsStringArrayElementType = enumU32AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU32), providerClrType: typeof(string)); enumU32AsStringArrayElementType.TypeMapping = enumU32AsStringArray.TypeMapping.ElementTypeMapping; @@ -4705,52 +3252,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU32AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU32AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU32AsStringCollectionElementType = enumU32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU32), providerClrType: typeof(string)); enumU32AsStringCollectionElementType.TypeMapping = enumU32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -4786,37 +3305,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU32Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU32Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var enumU32CollectionElementType = enumU32Collection.SetElementType(typeof(CompiledModelTestBase.EnumU32)); enumU32CollectionElementType.TypeMapping = enumU32Collection.TypeMapping.ElementTypeMapping; @@ -4853,20 +3349,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU64.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU64), + enumU64.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance); var enumU64Array = runtimeEntityType.AddProperty( @@ -4900,37 +3383,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var enumU64ArrayElementType = enumU64Array.SetElementType(typeof(CompiledModelTestBase.EnumU64)); enumU64ArrayElementType.TypeMapping = enumU64Array.TypeMapping.ElementTypeMapping; @@ -4967,27 +3427,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU64AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + enumU64AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU64AsString.SetSentinelFromProviderValue("Min"); var enumU64AsStringArray = runtimeEntityType.AddProperty( @@ -5021,52 +3467,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU64AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU64AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU64AsStringArrayElementType = enumU64AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU64), providerClrType: typeof(string)); enumU64AsStringArrayElementType.TypeMapping = enumU64AsStringArray.TypeMapping.ElementTypeMapping; @@ -5102,52 +3520,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU64AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU64AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU64AsStringCollectionElementType = enumU64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU64), providerClrType: typeof(string)); enumU64AsStringCollectionElementType.TypeMapping = enumU64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -5183,37 +3573,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU64Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU64Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var enumU64CollectionElementType = enumU64Collection.SetElementType(typeof(CompiledModelTestBase.EnumU64)); enumU64CollectionElementType.TypeMapping = enumU64Collection.TypeMapping.ElementTypeMapping; @@ -5249,56 +3616,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU64NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU64NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(ValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance))); var enumU64NestedCollectionElementType = enumU64NestedCollection.SetElementType(typeof(CompiledModelTestBase.EnumU64[])); enumU64NestedCollectionElementType.TypeMapping = enumU64NestedCollection.TypeMapping.ElementTypeMapping; @@ -5335,20 +3669,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU8.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU8), + enumU8.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance); var enumU8Array = runtimeEntityType.AddProperty( @@ -5382,37 +3703,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var enumU8ArrayElementType = enumU8Array.SetElementType(typeof(CompiledModelTestBase.EnumU8)); enumU8ArrayElementType.TypeMapping = enumU8Array.TypeMapping.ElementTypeMapping; @@ -5449,27 +3747,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU8AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + enumU8AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU8AsString.SetSentinelFromProviderValue("Min"); var enumU8AsStringArray = runtimeEntityType.AddProperty( @@ -5503,52 +3787,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU8AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU8AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU8AsStringArrayElementType = enumU8AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU8), providerClrType: typeof(string)); enumU8AsStringArrayElementType.TypeMapping = enumU8AsStringArray.TypeMapping.ElementTypeMapping; @@ -5584,52 +3840,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU8AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU8AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + EnumToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), - CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU8AsStringCollectionElementType = enumU8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU8), providerClrType: typeof(string)); enumU8AsStringCollectionElementType.TypeMapping = enumU8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -5665,37 +3893,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enumU8Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + enumU8Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var enumU8CollectionElementType = enumU8Collection.SetElementType(typeof(CompiledModelTestBase.EnumU8)); enumU8CollectionElementType.TypeMapping = enumU8Collection.TypeMapping.ElementTypeMapping; @@ -5732,20 +3937,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @float.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - clrType: typeof(float), + @float.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonFloatReaderWriter.Instance); var floatArray = runtimeEntityType.AddProperty( @@ -5779,37 +3971,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - floatArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + floatArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultFloatValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonFloatReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonFloatReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - clrType: typeof(float), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonFloatReaderWriter.Instance)); var floatArrayElementType = floatArray.SetElementType(typeof(float)); floatArrayElementType.TypeMapping = floatArray.TypeMapping.ElementTypeMapping; @@ -5846,20 +4015,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - guid.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + guid.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance); var guidArray = runtimeEntityType.AddProperty( @@ -5893,37 +4049,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - guidArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + guidArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonGuidReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonGuidReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance)); var guidArrayElementType = guidArray.SetElementType(typeof(Guid)); guidArrayElementType.TypeMapping = guidArray.TypeMapping.ElementTypeMapping; @@ -5959,19 +4092,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - guidNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, Guid[][]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)))))), - keyComparer: new ListOfReferenceTypesComparer, Guid[][]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + guidNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, Guid[][]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, Guid[][]>( new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( @@ -5980,56 +4103,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonGuidReaderWriter.Instance))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonGuidReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonGuidReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonGuidReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonGuidReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance)))); var guidNestedCollectionElementType = guidNestedCollection.SetElementType(typeof(Guid[][])); guidNestedCollectionElementType.TypeMapping = guidNestedCollection.TypeMapping.ElementTypeMapping; @@ -6066,27 +4156,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - guidToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - converter: new ValueConverter( - byte[] (Guid v) => v.ToByteArray(), - Guid (byte[] v) => new Guid(v)), + guidToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, + converter: new ValueConverter(byte[] (Guid v) => v.ToByteArray(), Guid (byte[] v) => new Guid(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteArrayReaderWriter.Instance, - new ValueConverter( - byte[] (Guid v) => v.ToByteArray(), - Guid (byte[] v) => new Guid(v)))); + new ValueConverter(byte[] (Guid v) => v.ToByteArray(), Guid (byte[] v) => new Guid(v)))); guidToBytesConverterProperty.SetSentinelFromProviderValue(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }); var guidToStringConverterProperty = runtimeEntityType.AddProperty( @@ -6121,27 +4197,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - guidToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)), + guidToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Guid v) => v.ToString("D"), - Guid (string v) => new Guid(v)))); + new ValueConverter(string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); guidToStringConverterProperty.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var iPAddress = runtimeEntityType.AddProperty( @@ -6175,27 +4237,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - iPAddress.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + iPAddress.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))); + IPAddressToStringConverter.Instance)); var iPAddressArray = runtimeEntityType.AddProperty( "IPAddressArray", @@ -6228,52 +4276,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - iPAddressArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + iPAddressArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var iPAddressArrayElementType = iPAddressArray.SetElementType(typeof(IPAddress)); iPAddressArrayElementType.TypeMapping = iPAddressArray.TypeMapping.ElementTypeMapping; @@ -6308,52 +4328,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - iPAddressReadOnlyCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + iPAddressReadOnlyCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var iPAddressReadOnlyCollectionElementType = iPAddressReadOnlyCollection.SetElementType(typeof(IPAddress), providerClrType: typeof(string)); iPAddressReadOnlyCollectionElementType.TypeMapping = iPAddressReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -6390,27 +4382,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - iPAddressToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - converter: new ValueConverter( - byte[] (IPAddress v) => v.GetAddressBytes(), - IPAddress (byte[] v) => new IPAddress(v)), + iPAddressToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, + converter: new ValueConverter(byte[] (IPAddress v) => v.GetAddressBytes(), IPAddress (byte[] v) => new IPAddress(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteArrayReaderWriter.Instance, - new ValueConverter( - byte[] (IPAddress v) => v.GetAddressBytes(), - IPAddress (byte[] v) => new IPAddress(v)))); + new ValueConverter(byte[] (IPAddress v) => v.GetAddressBytes(), IPAddress (byte[] v) => new IPAddress(v)))); var iPAddressToStringConverterProperty = runtimeEntityType.AddProperty( "IPAddressToStringConverterProperty", @@ -6444,27 +4422,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - iPAddressToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + iPAddressToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))); + new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))); var int16 = runtimeEntityType.AddProperty( "Int16", @@ -6498,20 +4462,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int16.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + int16.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance); var int16Array = runtimeEntityType.AddProperty( @@ -6545,37 +4496,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + int16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var int16ArrayElementType = int16Array.SetElementType(typeof(short)); int16ArrayElementType.TypeMapping = int16Array.TypeMapping.ElementTypeMapping; @@ -6612,20 +4540,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int32.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + int32.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); var int32Array = runtimeEntityType.AddProperty( @@ -6659,37 +4574,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + int32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance)); var int32ArrayElementType = int32Array.SetElementType(typeof(int)); int32ArrayElementType.TypeMapping = int32Array.TypeMapping.ElementTypeMapping; @@ -6725,56 +4617,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int32NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + int32NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance))); var int32NestedCollectionElementType = int32NestedCollection.SetElementType(typeof(int[])); int32NestedCollectionElementType.TypeMapping = int32NestedCollection.TypeMapping.ElementTypeMapping; @@ -6810,37 +4669,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int32ReadOnlyCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ListOfValueTypesComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + int32ReadOnlyCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, int>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, int>( JsonInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, int>( JsonInt32ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance)); var int32ReadOnlyCollectionElementType = int32ReadOnlyCollection.SetElementType(typeof(int)); int32ReadOnlyCollectionElementType.TypeMapping = int32ReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -6877,20 +4713,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int64.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + int64.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); var int64Array = runtimeEntityType.AddProperty( @@ -6924,37 +4747,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + int64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance)); var int64ArrayElementType = int64Array.SetElementType(typeof(long)); int64ArrayElementType.TypeMapping = int64Array.TypeMapping.ElementTypeMapping; @@ -6990,19 +4790,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int64NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer[], IList>(new ConvertingValueComparer, object>(new ListOfReferenceTypesComparer, long[]>(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)))))), - keyComparer: new ListOfReferenceTypesComparer[], IList>(new ConvertingValueComparer, object>(new ListOfReferenceTypesComparer, long[]>(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + int64NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer[], IList>(new ConvertingValueComparer, object>(new ListOfReferenceTypesComparer, long[]>(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter>(new JsonCollectionOfReferencesReaderWriter[], IList>( new JsonCollectionOfReferencesReaderWriter, long[]>( new JsonCollectionOfStructsReaderWriter( @@ -7011,56 +4801,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas new JsonCollectionOfReferencesReaderWriter, long[]>( new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, long[]>(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)))), - keyComparer: new ListOfReferenceTypesComparer, long[]>(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, long[]>(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, long[]>( new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, long[]>( new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance)))); var int64NestedCollectionElementType = int64NestedCollection.SetElementType(typeof(IList)); int64NestedCollectionElementType.TypeMapping = int64NestedCollection.TypeMapping.ElementTypeMapping; @@ -7097,20 +4854,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int8.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - clrType: typeof(sbyte), + int8.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSByteReaderWriter.Instance); var int8Array = runtimeEntityType.AddProperty( @@ -7144,37 +4888,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + int8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - clrType: typeof(sbyte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSByteReaderWriter.Instance)); var int8ArrayElementType = int8Array.SetElementType(typeof(sbyte)); int8ArrayElementType.TypeMapping = int8Array.TypeMapping.ElementTypeMapping; @@ -7210,19 +4931,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int8NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)))))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + int8NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( @@ -7231,56 +4942,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfValueTypesComparer(DefaultValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - clrType: typeof(sbyte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSByteReaderWriter.Instance)))); var int8NestedCollectionElementType = int8NestedCollection.SetElementType(typeof(sbyte[][])); int8NestedCollectionElementType.TypeMapping = int8NestedCollection.TypeMapping.ElementTypeMapping; @@ -7317,27 +4995,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - intNumberToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - converter: new ValueConverter( - byte[] (int v) => NumberToBytesConverter.ReverseInt(BitConverter.GetBytes(v)), - int (byte[] v) => (v == null ? 0 : BitConverter.ToInt32(NumberToBytesConverter.ReverseInt((v.Length == 0 ? new byte[4] : v)), 0))), + intNumberToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, + converter: new ValueConverter(byte[] (int v) => NumberToBytesConverter.ReverseInt(BitConverter.GetBytes(v)), int (byte[] v) => (v == null ? 0 : BitConverter.ToInt32(NumberToBytesConverter.ReverseInt((v.Length == 0 ? new byte[4] : v)), 0))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteArrayReaderWriter.Instance, - new ValueConverter( - byte[] (int v) => NumberToBytesConverter.ReverseInt(BitConverter.GetBytes(v)), - int (byte[] v) => (v == null ? 0 : BitConverter.ToInt32(NumberToBytesConverter.ReverseInt((v.Length == 0 ? new byte[4] : v)), 0))))); + new ValueConverter(byte[] (int v) => NumberToBytesConverter.ReverseInt(BitConverter.GetBytes(v)), int (byte[] v) => (v == null ? 0 : BitConverter.ToInt32(NumberToBytesConverter.ReverseInt((v.Length == 0 ? new byte[4] : v)), 0))))); intNumberToBytesConverterProperty.SetSentinelFromProviderValue(new byte[] { 0, 0, 0, 0 }); var intNumberToStringConverterProperty = runtimeEntityType.AddProperty( @@ -7372,27 +5036,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - intNumberToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), - int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), + intNumberToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), - int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); + new ValueConverter(string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)))); intNumberToStringConverterProperty.SetSentinelFromProviderValue("0"); var nullIntToNullStringConverterProperty = runtimeEntityType.AddProperty( @@ -7428,19 +5078,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullIntToNullStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int? v1, int? v2) => v1 == v2, - int (int? v) => ((int)v), - int? (int? v) => v), - keyComparer: new ValueComparer( - bool (int? v1, int? v2) => v1 == v2, - int (int? v) => ((int)v), - int? (int? v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullIntToNullStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (int? v) => (v == null ? null : ((object)v).ToString()), int? (string v) => (v == null || v == "" ? null : ((int? )(int.Parse(v)))), true), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, @@ -7478,23 +5118,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableBool.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + nullableBool.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance); nullableBool.SetComparer(new NullableValueComparer(nullableBool.TypeMapping.Comparer)); - nullableBool.SetKeyComparer(new NullableValueComparer(nullableBool.TypeMapping.KeyComparer)); var nullableBoolArray = runtimeEntityType.AddProperty( "NullableBoolArray", @@ -7527,37 +5153,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableBoolArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableBoolArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonBoolReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonBoolReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance)); var nullableBoolArrayElementType = nullableBoolArray.SetElementType(typeof(bool?), nullable: true); @@ -7596,20 +5199,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableBytes.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - clrType: typeof(byte[]), + nullableBytes.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteArrayReaderWriter.Instance); var nullableBytesArray = runtimeEntityType.AddProperty( @@ -7643,37 +5233,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableBytesArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableBytesArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - clrType: typeof(byte[]), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteArrayReaderWriter.Instance)); var nullableBytesArrayElementType = nullableBytesArray.SetElementType(typeof(byte[]), nullable: true); @@ -7710,56 +5277,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableBytesNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableBytesNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(ValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - clrType: typeof(byte[]), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteArrayReaderWriter.Instance))); var nullableBytesNestedCollectionElementType = nullableBytesNestedCollection.SetElementType(typeof(byte[][])); nullableBytesNestedCollectionElementType.TypeMapping = nullableBytesNestedCollection.TypeMapping.ElementTypeMapping; @@ -7796,23 +5330,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableChar.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - clrType: typeof(char), + nullableChar.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonCharReaderWriter.Instance); nullableChar.SetComparer(new NullableValueComparer(nullableChar.TypeMapping.Comparer)); - nullableChar.SetKeyComparer(new NullableValueComparer(nullableChar.TypeMapping.KeyComparer)); var nullableCharArray = runtimeEntityType.AddProperty( "NullableCharArray", @@ -7845,37 +5365,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableCharArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableCharArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonCharReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonCharReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - clrType: typeof(char), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonCharReaderWriter.Instance)); var nullableCharArrayElementType = nullableCharArray.SetElementType(typeof(char?), nullable: true); @@ -7914,23 +5411,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDateOnly.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - clrType: typeof(DateOnly), + nullableDateOnly.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateOnlyReaderWriter.Instance); nullableDateOnly.SetComparer(new NullableValueComparer(nullableDateOnly.TypeMapping.Comparer)); - nullableDateOnly.SetKeyComparer(new NullableValueComparer(nullableDateOnly.TypeMapping.KeyComparer)); var nullableDateOnlyArray = runtimeEntityType.AddProperty( "NullableDateOnlyArray", @@ -7963,37 +5446,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDateOnlyArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableDateOnlyArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonDateOnlyReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDateOnlyReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - clrType: typeof(DateOnly), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateOnlyReaderWriter.Instance)); var nullableDateOnlyArrayElementType = nullableDateOnlyArray.SetElementType(typeof(DateOnly?), nullable: true); @@ -8032,23 +5492,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDateTime.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + nullableDateTime.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance); nullableDateTime.SetComparer(new NullableValueComparer(nullableDateTime.TypeMapping.Comparer)); - nullableDateTime.SetKeyComparer(new NullableValueComparer(nullableDateTime.TypeMapping.KeyComparer)); var nullableDateTimeArray = runtimeEntityType.AddProperty( "NullableDateTimeArray", @@ -8081,37 +5527,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDateTimeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableDateTimeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var nullableDateTimeArrayElementType = nullableDateTimeArray.SetElementType(typeof(DateTime?), nullable: true); @@ -8150,23 +5573,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDecimal.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - clrType: typeof(decimal), + nullableDecimal.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDecimalReaderWriter.Instance); nullableDecimal.SetComparer(new NullableValueComparer(nullableDecimal.TypeMapping.Comparer)); - nullableDecimal.SetKeyComparer(new NullableValueComparer(nullableDecimal.TypeMapping.KeyComparer)); var nullableDecimalArray = runtimeEntityType.AddProperty( "NullableDecimalArray", @@ -8199,37 +5608,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDecimalArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableDecimalArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonDecimalReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDecimalReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - clrType: typeof(decimal), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDecimalReaderWriter.Instance)); var nullableDecimalArrayElementType = nullableDecimalArray.SetElementType(typeof(decimal?), nullable: true); @@ -8268,23 +5654,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDouble.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - clrType: typeof(double), + nullableDouble.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDoubleReaderWriter.Instance); nullableDouble.SetComparer(new NullableValueComparer(nullableDouble.TypeMapping.Comparer)); - nullableDouble.SetKeyComparer(new NullableValueComparer(nullableDouble.TypeMapping.KeyComparer)); var nullableDoubleArray = runtimeEntityType.AddProperty( "NullableDoubleArray", @@ -8317,37 +5689,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDoubleArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableDoubleArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultDoubleValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonDoubleReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDoubleReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - clrType: typeof(double), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDoubleReaderWriter.Instance)); var nullableDoubleArrayElementType = nullableDoubleArray.SetElementType(typeof(double?), nullable: true); @@ -8386,23 +5735,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum16.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - clrType: typeof(CompiledModelTestBase.Enum16), + nullableEnum16.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); nullableEnum16.SetComparer(new NullableValueComparer(nullableEnum16.TypeMapping.Comparer)); - nullableEnum16.SetKeyComparer(new NullableValueComparer(nullableEnum16.TypeMapping.KeyComparer)); var nullableEnum16Array = runtimeEntityType.AddProperty( "NullableEnum16Array", @@ -8435,37 +5770,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - clrType: typeof(CompiledModelTestBase.Enum16), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum16ArrayElementType = nullableEnum16Array.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); @@ -8504,23 +5816,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum16AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - clrType: typeof(CompiledModelTestBase.Enum16), + nullableEnum16AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); nullableEnum16AsString.SetComparer(new NullableValueComparer(nullableEnum16AsString.TypeMapping.Comparer)); - nullableEnum16AsString.SetKeyComparer(new NullableValueComparer(nullableEnum16AsString.TypeMapping.KeyComparer)); var nullableEnum16AsStringArray = runtimeEntityType.AddProperty( "NullableEnum16AsStringArray", @@ -8553,37 +5851,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum16AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum16AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - clrType: typeof(CompiledModelTestBase.Enum16), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum16AsStringArrayElementType = nullableEnum16AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); @@ -8621,37 +5896,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum16AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum16AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - clrType: typeof(CompiledModelTestBase.Enum16), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum16AsStringCollectionElementType = nullableEnum16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); @@ -8689,37 +5941,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum16Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum16Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - clrType: typeof(CompiledModelTestBase.Enum16), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum16CollectionElementType = nullableEnum16Collection.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); @@ -8758,23 +5987,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum32.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - clrType: typeof(CompiledModelTestBase.Enum32), + nullableEnum32.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); nullableEnum32.SetComparer(new NullableValueComparer(nullableEnum32.TypeMapping.Comparer)); - nullableEnum32.SetKeyComparer(new NullableValueComparer(nullableEnum32.TypeMapping.KeyComparer)); var nullableEnum32Array = runtimeEntityType.AddProperty( "NullableEnum32Array", @@ -8807,37 +6022,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - clrType: typeof(CompiledModelTestBase.Enum32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum32ArrayElementType = nullableEnum32Array.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); @@ -8876,23 +6068,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum32AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - clrType: typeof(CompiledModelTestBase.Enum32), + nullableEnum32AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); nullableEnum32AsString.SetComparer(new NullableValueComparer(nullableEnum32AsString.TypeMapping.Comparer)); - nullableEnum32AsString.SetKeyComparer(new NullableValueComparer(nullableEnum32AsString.TypeMapping.KeyComparer)); var nullableEnum32AsStringArray = runtimeEntityType.AddProperty( "NullableEnum32AsStringArray", @@ -8925,37 +6103,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum32AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum32AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - clrType: typeof(CompiledModelTestBase.Enum32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum32AsStringArrayElementType = nullableEnum32AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); @@ -8993,37 +6148,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum32AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum32AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - clrType: typeof(CompiledModelTestBase.Enum32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum32AsStringCollectionElementType = nullableEnum32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); @@ -9061,37 +6193,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum32Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum32Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - clrType: typeof(CompiledModelTestBase.Enum32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum32CollectionElementType = nullableEnum32Collection.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); @@ -9129,19 +6238,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum32NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))))))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum32NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)))))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( @@ -9150,56 +6249,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - clrType: typeof(CompiledModelTestBase.Enum32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)))); var nullableEnum32NestedCollectionElementType = nullableEnum32NestedCollection.SetElementType(typeof(CompiledModelTestBase.Enum32?[][])); nullableEnum32NestedCollectionElementType.TypeMapping = nullableEnum32NestedCollection.TypeMapping.ElementTypeMapping; @@ -9236,23 +6302,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum64.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - clrType: typeof(CompiledModelTestBase.Enum64), + nullableEnum64.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); nullableEnum64.SetComparer(new NullableValueComparer(nullableEnum64.TypeMapping.Comparer)); - nullableEnum64.SetKeyComparer(new NullableValueComparer(nullableEnum64.TypeMapping.KeyComparer)); var nullableEnum64Array = runtimeEntityType.AddProperty( "NullableEnum64Array", @@ -9285,37 +6337,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - clrType: typeof(CompiledModelTestBase.Enum64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum64ArrayElementType = nullableEnum64Array.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); @@ -9354,23 +6383,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum64AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - clrType: typeof(CompiledModelTestBase.Enum64), + nullableEnum64AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); nullableEnum64AsString.SetComparer(new NullableValueComparer(nullableEnum64AsString.TypeMapping.Comparer)); - nullableEnum64AsString.SetKeyComparer(new NullableValueComparer(nullableEnum64AsString.TypeMapping.KeyComparer)); var nullableEnum64AsStringArray = runtimeEntityType.AddProperty( "NullableEnum64AsStringArray", @@ -9403,37 +6418,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum64AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum64AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - clrType: typeof(CompiledModelTestBase.Enum64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum64AsStringArrayElementType = nullableEnum64AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); @@ -9471,37 +6463,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum64AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum64AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - clrType: typeof(CompiledModelTestBase.Enum64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum64AsStringCollectionElementType = nullableEnum64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); @@ -9539,37 +6508,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum64Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum64Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - clrType: typeof(CompiledModelTestBase.Enum64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum64CollectionElementType = nullableEnum64Collection.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); @@ -9608,23 +6554,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum8.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - clrType: typeof(CompiledModelTestBase.Enum8), + nullableEnum8.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); nullableEnum8.SetComparer(new NullableValueComparer(nullableEnum8.TypeMapping.Comparer)); - nullableEnum8.SetKeyComparer(new NullableValueComparer(nullableEnum8.TypeMapping.KeyComparer)); var nullableEnum8Array = runtimeEntityType.AddProperty( "NullableEnum8Array", @@ -9657,37 +6589,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - clrType: typeof(CompiledModelTestBase.Enum8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum8ArrayElementType = nullableEnum8Array.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); @@ -9726,23 +6635,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum8AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - clrType: typeof(CompiledModelTestBase.Enum8), + nullableEnum8AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); nullableEnum8AsString.SetComparer(new NullableValueComparer(nullableEnum8AsString.TypeMapping.Comparer)); - nullableEnum8AsString.SetKeyComparer(new NullableValueComparer(nullableEnum8AsString.TypeMapping.KeyComparer)); var nullableEnum8AsStringArray = runtimeEntityType.AddProperty( "NullableEnum8AsStringArray", @@ -9775,37 +6670,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum8AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum8AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - clrType: typeof(CompiledModelTestBase.Enum8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum8AsStringArrayElementType = nullableEnum8AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); @@ -9843,37 +6715,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum8AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum8AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - clrType: typeof(CompiledModelTestBase.Enum8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum8AsStringCollectionElementType = nullableEnum8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); @@ -9911,37 +6760,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum8Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum8Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - clrType: typeof(CompiledModelTestBase.Enum8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance)); var nullableEnum8CollectionElementType = nullableEnum8Collection.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); @@ -9979,56 +6805,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnum8NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnum8NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - clrType: typeof(CompiledModelTestBase.Enum8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance))); var nullableEnum8NestedCollectionElementType = nullableEnum8NestedCollection.SetElementType(typeof(CompiledModelTestBase.Enum8?[])); nullableEnum8NestedCollectionElementType.TypeMapping = nullableEnum8NestedCollection.TypeMapping.ElementTypeMapping; @@ -10065,23 +6858,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU16.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU16), + nullableEnumU16.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance); nullableEnumU16.SetComparer(new NullableValueComparer(nullableEnumU16.TypeMapping.Comparer)); - nullableEnumU16.SetKeyComparer(new NullableValueComparer(nullableEnumU16.TypeMapping.KeyComparer)); var nullableEnumU16Array = runtimeEntityType.AddProperty( "NullableEnumU16Array", @@ -10114,37 +6893,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU16), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU16ArrayElementType = nullableEnumU16Array.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); @@ -10183,23 +6939,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU16AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU16), + nullableEnumU16AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance); nullableEnumU16AsString.SetComparer(new NullableValueComparer(nullableEnumU16AsString.TypeMapping.Comparer)); - nullableEnumU16AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU16AsString.TypeMapping.KeyComparer)); var nullableEnumU16AsStringArray = runtimeEntityType.AddProperty( "NullableEnumU16AsStringArray", @@ -10232,37 +6974,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU16AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU16AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU16), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU16AsStringArrayElementType = nullableEnumU16AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); @@ -10300,37 +7019,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU16AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU16AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU16), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU16AsStringCollectionElementType = nullableEnumU16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); @@ -10368,37 +7064,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU16Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU16Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU16), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU16CollectionElementType = nullableEnumU16Collection.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); @@ -10437,23 +7110,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU32.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU32), + nullableEnumU32.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance); nullableEnumU32.SetComparer(new NullableValueComparer(nullableEnumU32.TypeMapping.Comparer)); - nullableEnumU32.SetKeyComparer(new NullableValueComparer(nullableEnumU32.TypeMapping.KeyComparer)); var nullableEnumU32Array = runtimeEntityType.AddProperty( "NullableEnumU32Array", @@ -10486,37 +7145,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU32ArrayElementType = nullableEnumU32Array.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); @@ -10555,23 +7191,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU32AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU32), + nullableEnumU32AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance); nullableEnumU32AsString.SetComparer(new NullableValueComparer(nullableEnumU32AsString.TypeMapping.Comparer)); - nullableEnumU32AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU32AsString.TypeMapping.KeyComparer)); var nullableEnumU32AsStringArray = runtimeEntityType.AddProperty( "NullableEnumU32AsStringArray", @@ -10604,37 +7226,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU32AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU32AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU32AsStringArrayElementType = nullableEnumU32AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); @@ -10672,37 +7271,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU32AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU32AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU32AsStringCollectionElementType = nullableEnumU32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); @@ -10740,37 +7316,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU32Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU32Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU32), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU32CollectionElementType = nullableEnumU32Collection.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); @@ -10809,23 +7362,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU64.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU64), + nullableEnumU64.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance); nullableEnumU64.SetComparer(new NullableValueComparer(nullableEnumU64.TypeMapping.Comparer)); - nullableEnumU64.SetKeyComparer(new NullableValueComparer(nullableEnumU64.TypeMapping.KeyComparer)); var nullableEnumU64Array = runtimeEntityType.AddProperty( "NullableEnumU64Array", @@ -10858,37 +7397,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU64ArrayElementType = nullableEnumU64Array.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); @@ -10927,23 +7443,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU64AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU64), + nullableEnumU64AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance); nullableEnumU64AsString.SetComparer(new NullableValueComparer(nullableEnumU64AsString.TypeMapping.Comparer)); - nullableEnumU64AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU64AsString.TypeMapping.KeyComparer)); var nullableEnumU64AsStringArray = runtimeEntityType.AddProperty( "NullableEnumU64AsStringArray", @@ -10976,37 +7478,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU64AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU64AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU64AsStringArrayElementType = nullableEnumU64AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); @@ -11044,37 +7523,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU64AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU64AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU64AsStringCollectionElementType = nullableEnumU64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); @@ -11112,37 +7568,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU64Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU64Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU64CollectionElementType = nullableEnumU64Collection.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); @@ -11180,56 +7613,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU64NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU64NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU64), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance))); var nullableEnumU64NestedCollectionElementType = nullableEnumU64NestedCollection.SetElementType(typeof(CompiledModelTestBase.EnumU64?[])); nullableEnumU64NestedCollectionElementType.TypeMapping = nullableEnumU64NestedCollection.TypeMapping.ElementTypeMapping; @@ -11266,23 +7666,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU8.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU8), + nullableEnumU8.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance); nullableEnumU8.SetComparer(new NullableValueComparer(nullableEnumU8.TypeMapping.Comparer)); - nullableEnumU8.SetKeyComparer(new NullableValueComparer(nullableEnumU8.TypeMapping.KeyComparer)); var nullableEnumU8Array = runtimeEntityType.AddProperty( "NullableEnumU8Array", @@ -11315,37 +7701,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU8ArrayElementType = nullableEnumU8Array.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); @@ -11384,23 +7747,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU8AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU8), + nullableEnumU8AsString.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance); nullableEnumU8AsString.SetComparer(new NullableValueComparer(nullableEnumU8AsString.TypeMapping.Comparer)); - nullableEnumU8AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU8AsString.TypeMapping.KeyComparer)); var nullableEnumU8AsStringArray = runtimeEntityType.AddProperty( "NullableEnumU8AsStringArray", @@ -11433,37 +7782,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU8AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU8AsStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU8AsStringArrayElementType = nullableEnumU8AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); @@ -11501,37 +7827,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU8AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU8AsStringCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU8AsStringCollectionElementType = nullableEnumU8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); @@ -11569,37 +7872,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableEnumU8Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableEnumU8Collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( JsonUnsignedEnumReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( JsonUnsignedEnumReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - clrType: typeof(CompiledModelTestBase.EnumU8), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUnsignedEnumReaderWriter.Instance)); var nullableEnumU8CollectionElementType = nullableEnumU8Collection.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); @@ -11638,23 +7918,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableFloat.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - clrType: typeof(float), + nullableFloat.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonFloatReaderWriter.Instance); nullableFloat.SetComparer(new NullableValueComparer(nullableFloat.TypeMapping.Comparer)); - nullableFloat.SetKeyComparer(new NullableValueComparer(nullableFloat.TypeMapping.KeyComparer)); var nullableFloatArray = runtimeEntityType.AddProperty( "NullableFloatArray", @@ -11687,37 +7953,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableFloatArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableFloatArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultFloatValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonFloatReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonFloatReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - clrType: typeof(float), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonFloatReaderWriter.Instance)); var nullableFloatArrayElementType = nullableFloatArray.SetElementType(typeof(float?), nullable: true); @@ -11756,23 +7999,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableGuid.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + nullableGuid.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance); nullableGuid.SetComparer(new NullableValueComparer(nullableGuid.TypeMapping.Comparer)); - nullableGuid.SetKeyComparer(new NullableValueComparer(nullableGuid.TypeMapping.KeyComparer)); var nullableGuidArray = runtimeEntityType.AddProperty( "NullableGuidArray", @@ -11805,37 +8034,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableGuidArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableGuidArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonGuidReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonGuidReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance)); var nullableGuidArrayElementType = nullableGuidArray.SetElementType(typeof(Guid?), nullable: true); @@ -11873,56 +8079,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableGuidNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableGuidNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonGuidReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonGuidReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonGuidReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonGuidReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance))); var nullableGuidNestedCollectionElementType = nullableGuidNestedCollection.SetElementType(typeof(Guid?[])); nullableGuidNestedCollectionElementType.TypeMapping = nullableGuidNestedCollection.TypeMapping.ElementTypeMapping; @@ -11959,27 +8132,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableIPAddress.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + nullableIPAddress.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))); + IPAddressToStringConverter.Instance)); var nullableIPAddressArray = runtimeEntityType.AddProperty( "NullableIPAddressArray", @@ -12012,52 +8171,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableIPAddressArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableIPAddressArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var nullableIPAddressArrayElementType = nullableIPAddressArray.SetElementType(typeof(IPAddress), nullable: true); nullableIPAddressArrayElementType.TypeMapping = nullableIPAddressArray.TypeMapping.ElementTypeMapping; @@ -12094,23 +8225,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt16.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + nullableInt16.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance); nullableInt16.SetComparer(new NullableValueComparer(nullableInt16.TypeMapping.Comparer)); - nullableInt16.SetKeyComparer(new NullableValueComparer(nullableInt16.TypeMapping.KeyComparer)); var nullableInt16Array = runtimeEntityType.AddProperty( "NullableInt16Array", @@ -12143,37 +8260,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableInt16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var nullableInt16ArrayElementType = nullableInt16Array.SetElementType(typeof(short?), nullable: true); @@ -12212,23 +8306,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt32.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + nullableInt32.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); nullableInt32.SetComparer(new NullableValueComparer(nullableInt32.TypeMapping.Comparer)); - nullableInt32.SetKeyComparer(new NullableValueComparer(nullableInt32.TypeMapping.KeyComparer)); var nullableInt32Array = runtimeEntityType.AddProperty( "NullableInt32Array", @@ -12261,37 +8341,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableInt32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance)); var nullableInt32ArrayElementType = nullableInt32Array.SetElementType(typeof(int?), nullable: true); @@ -12329,56 +8386,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt32NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableInt32NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance))); var nullableInt32NestedCollectionElementType = nullableInt32NestedCollection.SetElementType(typeof(int?[])); nullableInt32NestedCollectionElementType.TypeMapping = nullableInt32NestedCollection.TypeMapping.ElementTypeMapping; @@ -12415,23 +8439,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt64.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + nullableInt64.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); nullableInt64.SetComparer(new NullableValueComparer(nullableInt64.TypeMapping.Comparer)); - nullableInt64.SetKeyComparer(new NullableValueComparer(nullableInt64.TypeMapping.KeyComparer)); var nullableInt64Array = runtimeEntityType.AddProperty( "NullableInt64Array", @@ -12464,37 +8474,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableInt64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance)); var nullableInt64ArrayElementType = nullableInt64Array.SetElementType(typeof(long?), nullable: true); @@ -12532,19 +8519,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt64NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, long?[][]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))))))), - keyComparer: new ListOfReferenceTypesComparer, long?[][]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableInt64NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, long?[][]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)))))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, long?[][]>( new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( @@ -12553,56 +8530,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance)))); var nullableInt64NestedCollectionElementType = nullableInt64NestedCollection.SetElementType(typeof(long?[][])); nullableInt64NestedCollectionElementType.TypeMapping = nullableInt64NestedCollection.TypeMapping.ElementTypeMapping; @@ -12639,23 +8583,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt8.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - clrType: typeof(sbyte), + nullableInt8.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSByteReaderWriter.Instance); nullableInt8.SetComparer(new NullableValueComparer(nullableInt8.TypeMapping.Comparer)); - nullableInt8.SetKeyComparer(new NullableValueComparer(nullableInt8.TypeMapping.KeyComparer)); var nullableInt8Array = runtimeEntityType.AddProperty( "NullableInt8Array", @@ -12688,37 +8618,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableInt8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - clrType: typeof(sbyte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSByteReaderWriter.Instance)); var nullableInt8ArrayElementType = nullableInt8Array.SetElementType(typeof(sbyte?), nullable: true); @@ -12757,27 +8664,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullablePhysicalAddress.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + nullablePhysicalAddress.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + PhysicalAddressToStringConverter.Instance)); var nullablePhysicalAddressArray = runtimeEntityType.AddProperty( "NullablePhysicalAddressArray", @@ -12810,52 +8703,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullablePhysicalAddressArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullablePhysicalAddressArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v))))), + PhysicalAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + PhysicalAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v))))); + PhysicalAddressToStringConverter.Instance))); var nullablePhysicalAddressArrayElementType = nullablePhysicalAddressArray.SetElementType(typeof(PhysicalAddress), nullable: true); nullablePhysicalAddressArrayElementType.TypeMapping = nullablePhysicalAddressArray.TypeMapping.ElementTypeMapping; @@ -12891,108 +8756,52 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullablePhysicalAddressNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, PhysicalAddress[][]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)))))), - keyComparer: new ListOfReferenceTypesComparer, PhysicalAddress[][]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullablePhysicalAddressNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, PhysicalAddress[][]>(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(ValueComparer.Default))))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, PhysicalAddress[][]>( new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v))))))), + PhysicalAddressToStringConverter.Instance))))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, PhysicalAddress[][]>( new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)))))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + PhysicalAddressToStringConverter.Instance)))), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(ValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)))))), + PhysicalAddressToStringConverter.Instance)))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v))))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + PhysicalAddressToStringConverter.Instance))), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v))))), + PhysicalAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + PhysicalAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v))))))); + PhysicalAddressToStringConverter.Instance))))); var nullablePhysicalAddressNestedCollectionElementType = nullablePhysicalAddressNestedCollection.SetElementType(typeof(PhysicalAddress[][])); nullablePhysicalAddressNestedCollectionElementType.TypeMapping = nullablePhysicalAddressNestedCollection.TypeMapping.ElementTypeMapping; @@ -13029,20 +8838,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableString.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + nullableString.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var nullableStringArray = runtimeEntityType.AddProperty( @@ -13076,37 +8872,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableStringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var nullableStringArrayElementType = nullableStringArray.SetElementType(typeof(string), nullable: true); @@ -13143,56 +8916,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableStringNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableStringNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(DefaultValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance))); var nullableStringNestedCollectionElementType = nullableStringNestedCollection.SetElementType(typeof(string[])); nullableStringNestedCollectionElementType.TypeMapping = nullableStringNestedCollection.TypeMapping.ElementTypeMapping; @@ -13229,23 +8969,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableTimeOnly.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - clrType: typeof(TimeOnly), + nullableTimeOnly.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonTimeOnlyReaderWriter.Instance); nullableTimeOnly.SetComparer(new NullableValueComparer(nullableTimeOnly.TypeMapping.Comparer)); - nullableTimeOnly.SetKeyComparer(new NullableValueComparer(nullableTimeOnly.TypeMapping.KeyComparer)); var nullableTimeOnlyArray = runtimeEntityType.AddProperty( "NullableTimeOnlyArray", @@ -13278,37 +9004,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableTimeOnlyArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableTimeOnlyArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonTimeOnlyReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonTimeOnlyReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - clrType: typeof(TimeOnly), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonTimeOnlyReaderWriter.Instance)); var nullableTimeOnlyArrayElementType = nullableTimeOnlyArray.SetElementType(typeof(TimeOnly?), nullable: true); @@ -13347,23 +9050,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableTimeSpan.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - clrType: typeof(TimeSpan), + nullableTimeSpan.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonTimeSpanReaderWriter.Instance); nullableTimeSpan.SetComparer(new NullableValueComparer(nullableTimeSpan.TypeMapping.Comparer)); - nullableTimeSpan.SetKeyComparer(new NullableValueComparer(nullableTimeSpan.TypeMapping.KeyComparer)); var nullableTimeSpanArray = runtimeEntityType.AddProperty( "NullableTimeSpanArray", @@ -13396,37 +9085,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableTimeSpanArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableTimeSpanArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonTimeSpanReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonTimeSpanReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - clrType: typeof(TimeSpan), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonTimeSpanReaderWriter.Instance)); var nullableTimeSpanArrayElementType = nullableTimeSpanArray.SetElementType(typeof(TimeSpan?), nullable: true); @@ -13465,23 +9131,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt16.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - clrType: typeof(ushort), + nullableUInt16.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt16ReaderWriter.Instance); nullableUInt16.SetComparer(new NullableValueComparer(nullableUInt16.TypeMapping.Comparer)); - nullableUInt16.SetKeyComparer(new NullableValueComparer(nullableUInt16.TypeMapping.KeyComparer)); var nullableUInt16Array = runtimeEntityType.AddProperty( "NullableUInt16Array", @@ -13514,37 +9166,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableUInt16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - clrType: typeof(ushort), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt16ReaderWriter.Instance)); var nullableUInt16ArrayElementType = nullableUInt16Array.SetElementType(typeof(ushort?), nullable: true); @@ -13583,23 +9212,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt32.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - clrType: typeof(uint), + nullableUInt32.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt32ReaderWriter.Instance); nullableUInt32.SetComparer(new NullableValueComparer(nullableUInt32.TypeMapping.Comparer)); - nullableUInt32.SetKeyComparer(new NullableValueComparer(nullableUInt32.TypeMapping.KeyComparer)); var nullableUInt32Array = runtimeEntityType.AddProperty( "NullableUInt32Array", @@ -13632,37 +9247,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableUInt32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUInt32ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - clrType: typeof(uint), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt32ReaderWriter.Instance)); var nullableUInt32ArrayElementType = nullableUInt32Array.SetElementType(typeof(uint?), nullable: true); @@ -13701,23 +9293,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt64.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - clrType: typeof(ulong), + nullableUInt64.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt64ReaderWriter.Instance); nullableUInt64.SetComparer(new NullableValueComparer(nullableUInt64.TypeMapping.Comparer)); - nullableUInt64.SetKeyComparer(new NullableValueComparer(nullableUInt64.TypeMapping.KeyComparer)); var nullableUInt64Array = runtimeEntityType.AddProperty( "NullableUInt64Array", @@ -13750,37 +9328,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableUInt64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUInt64ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - clrType: typeof(ulong), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt64ReaderWriter.Instance)); var nullableUInt64ArrayElementType = nullableUInt64Array.SetElementType(typeof(ulong?), nullable: true); @@ -13819,23 +9374,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt8.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + nullableUInt8.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance); nullableUInt8.SetComparer(new NullableValueComparer(nullableUInt8.TypeMapping.Comparer)); - nullableUInt8.SetKeyComparer(new NullableValueComparer(nullableUInt8.TypeMapping.KeyComparer)); var nullableUInt8Array = runtimeEntityType.AddProperty( "NullableUInt8Array", @@ -13868,37 +9409,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableUInt8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var nullableUInt8ArrayElementType = nullableUInt8Array.SetElementType(typeof(byte?), nullable: true); @@ -13936,56 +9454,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt8NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableUInt8NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer>(new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance))); var nullableUInt8NestedCollectionElementType = nullableUInt8NestedCollection.SetElementType(typeof(byte?[])); nullableUInt8NestedCollectionElementType.TypeMapping = nullableUInt8NestedCollection.TypeMapping.ElementTypeMapping; @@ -14022,27 +9507,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUri.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + nullableUri.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + UriToStringConverter.Instance)); var nullableUriArray = runtimeEntityType.AddProperty( "NullableUriArray", @@ -14075,52 +9546,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUriArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + nullableUriArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))), + UriToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + UriToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))); + UriToStringConverter.Instance))); var nullableUriArrayElementType = nullableUriArray.SetElementType(typeof(Uri), nullable: true); nullableUriArrayElementType.TypeMapping = nullableUriArray.TypeMapping.ElementTypeMapping; @@ -14156,27 +9599,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - physicalAddress.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + physicalAddress.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + PhysicalAddressToStringConverter.Instance)); var physicalAddressArray = runtimeEntityType.AddProperty( "PhysicalAddressArray", @@ -14209,52 +9638,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - physicalAddressArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + physicalAddressArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v))))), + PhysicalAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + PhysicalAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v))))); + PhysicalAddressToStringConverter.Instance))); var physicalAddressArrayElementType = physicalAddressArray.SetElementType(typeof(PhysicalAddress)); physicalAddressArrayElementType.TypeMapping = physicalAddressArray.TypeMapping.ElementTypeMapping; @@ -14290,27 +9691,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - physicalAddressToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - converter: new ValueConverter( - byte[] (PhysicalAddress v) => v.GetAddressBytes(), - PhysicalAddress (byte[] v) => new PhysicalAddress(v)), + physicalAddressToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, + converter: new ValueConverter(byte[] (PhysicalAddress v) => v.GetAddressBytes(), PhysicalAddress (byte[] v) => new PhysicalAddress(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteArrayReaderWriter.Instance, - new ValueConverter( - byte[] (PhysicalAddress v) => v.GetAddressBytes(), - PhysicalAddress (byte[] v) => new PhysicalAddress(v)))); + new ValueConverter(byte[] (PhysicalAddress v) => v.GetAddressBytes(), PhysicalAddress (byte[] v) => new PhysicalAddress(v)))); var physicalAddressToStringConverterProperty = runtimeEntityType.AddProperty( "PhysicalAddressToStringConverterProperty", @@ -14344,27 +9731,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - physicalAddressToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + physicalAddressToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (PhysicalAddress v) => ((object)v).ToString(), - PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); var @string = runtimeEntityType.AddProperty( "String", @@ -14397,20 +9770,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @string.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + @string.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var stringArray = runtimeEntityType.AddProperty( @@ -14444,37 +9804,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + stringArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var stringArrayElementType = stringArray.SetElementType(typeof(string)); stringArrayElementType.TypeMapping = stringArray.TypeMapping.ElementTypeMapping; @@ -14510,56 +9847,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)))), - keyComparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + stringNestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ConvertingValueComparer(new ListOfReferenceTypesComparer(DefaultValueComparer.Default))), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance)), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance))); var stringNestedCollectionElementType = stringNestedCollection.SetElementType(typeof(string[])); stringNestedCollectionElementType.TypeMapping = stringNestedCollection.TypeMapping.ElementTypeMapping; @@ -14595,37 +9899,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringReadOnlyCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + stringReadOnlyCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var stringReadOnlyCollectionElementType = stringReadOnlyCollection.SetElementType(typeof(string)); stringReadOnlyCollectionElementType.TypeMapping = stringReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -14662,27 +9943,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToBoolConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - converter: new ValueConverter( - bool (string v) => Convert.ToBoolean(v), - string (bool v) => Convert.ToString(v)), + stringToBoolConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(bool (string v) => Convert.ToBoolean(v), string (bool v) => Convert.ToString(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonBoolReaderWriter.Instance, - new ValueConverter( - bool (string v) => Convert.ToBoolean(v), - string (bool v) => Convert.ToString(v)))); + new ValueConverter(bool (string v) => Convert.ToBoolean(v), string (bool v) => Convert.ToString(v)))); var stringToBytesConverterProperty = runtimeEntityType.AddProperty( "StringToBytesConverterProperty", @@ -14716,27 +9983,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - converter: new ValueConverter( - byte[] (string v) => Encoding.GetEncoding(12000).GetBytes(v), - string (byte[] v) => Encoding.GetEncoding(12000).GetString(v)), + stringToBytesConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, + converter: new ValueConverter(byte[] (string v) => Encoding.GetEncoding(12000).GetBytes(v), string (byte[] v) => Encoding.GetEncoding(12000).GetString(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteArrayReaderWriter.Instance, - new ValueConverter( - byte[] (string v) => Encoding.GetEncoding(12000).GetBytes(v), - string (byte[] v) => Encoding.GetEncoding(12000).GetString(v)))); + new ValueConverter(byte[] (string v) => Encoding.GetEncoding(12000).GetBytes(v), string (byte[] v) => Encoding.GetEncoding(12000).GetString(v)))); var stringToCharConverterProperty = runtimeEntityType.AddProperty( "StringToCharConverterProperty", @@ -14770,27 +10023,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToCharConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - converter: new ValueConverter( - char (string v) => (v.Length < 1 ? '\0' : v[0]), - string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), + stringToCharConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(char (string v) => (v.Length < 1 ? '\0' : v[0]), string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonCharReaderWriter.Instance, - new ValueConverter( - char (string v) => (v.Length < 1 ? '\0' : v[0]), - string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))))); + new ValueConverter(char (string v) => (v.Length < 1 ? '\0' : v[0]), string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))))); var stringToDateOnlyConverterProperty = runtimeEntityType.AddProperty( "StringToDateOnlyConverterProperty", @@ -14824,27 +10063,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToDateOnlyConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - converter: new ValueConverter( - DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), - string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd")), + stringToDateOnlyConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd")), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDateOnlyReaderWriter.Instance, - new ValueConverter( - DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), - string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd")))); + new ValueConverter(DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd")))); var stringToDateTimeConverterProperty = runtimeEntityType.AddProperty( "StringToDateTimeConverterProperty", @@ -14878,27 +10103,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToDateTimeConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - converter: new ValueConverter( - DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture), - string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF")), + stringToDateTimeConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture), string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF")), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDateTimeReaderWriter.Instance, - new ValueConverter( - DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture), - string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF")))); + new ValueConverter(DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture), string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF")))); var stringToDateTimeOffsetConverterProperty = runtimeEntityType.AddProperty( "StringToDateTimeOffsetConverterProperty", @@ -14932,27 +10143,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToDateTimeOffsetConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - converter: new ValueConverter( - DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture), - string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz")), + stringToDateTimeOffsetConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultDateTimeOffsetValueComparer.Default, + converter: new ValueConverter(DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture), string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz")), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDateTimeOffsetReaderWriter.Instance, - new ValueConverter( - DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture), - string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz")))); + new ValueConverter(DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture), string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz")))); var stringToDecimalNumberConverterProperty = runtimeEntityType.AddProperty( "StringToDecimalNumberConverterProperty", @@ -14986,27 +10183,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToDecimalNumberConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - converter: new ValueConverter( - decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), - string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), + stringToDecimalNumberConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter( - decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), - string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))))); + new ValueConverter(decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))))); var stringToDoubleNumberConverterProperty = runtimeEntityType.AddProperty( "StringToDoubleNumberConverterProperty", @@ -15040,27 +10223,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToDoubleNumberConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - converter: new ValueConverter( - double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), - string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v))), + stringToDoubleNumberConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultDoubleValueComparer.Default, + converter: new ValueConverter(double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDoubleReaderWriter.Instance, - new ValueConverter( - double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), - string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v))))); + new ValueConverter(double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v))))); var stringToEnumConverterProperty = runtimeEntityType.AddProperty( "StringToEnumConverterProperty", @@ -15094,27 +10263,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToEnumConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - converter: new ValueConverter( - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v), - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString()), + stringToEnumConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.Default, + converter: new ValueConverter(CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v), string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString()), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUnsignedEnumReaderWriter.Instance, - new ValueConverter( - CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v), - string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString()))); + new ValueConverter(CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v), string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString()))); var stringToGuidConverterProperty = runtimeEntityType.AddProperty( "StringToGuidConverterProperty", @@ -15147,20 +10302,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToGuidConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + stringToGuidConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var stringToIntNumberConverterProperty = runtimeEntityType.AddProperty( @@ -15195,27 +10337,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToIntNumberConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter( - int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), - string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), + stringToIntNumberConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter( - int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), - string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))))); + new ValueConverter(int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))))); var stringToTimeOnlyConverterProperty = runtimeEntityType.AddProperty( "StringToTimeOnlyConverterProperty", @@ -15249,27 +10377,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToTimeOnlyConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - converter: new ValueConverter( - TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), - string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o"))), + stringToTimeOnlyConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o"))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonTimeOnlyReaderWriter.Instance, - new ValueConverter( - TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), - string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o"))))); + new ValueConverter(TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o"))))); var stringToTimeSpanConverterProperty = runtimeEntityType.AddProperty( "StringToTimeSpanConverterProperty", @@ -15303,27 +10417,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToTimeSpanConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - converter: new ValueConverter( - TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture), - string (TimeSpan v) => v.ToString("c")), + stringToTimeSpanConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture), string (TimeSpan v) => v.ToString("c")), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonTimeSpanReaderWriter.Instance, - new ValueConverter( - TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture), - string (TimeSpan v) => v.ToString("c")))); + new ValueConverter(TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture), string (TimeSpan v) => v.ToString("c")))); var stringToUriConverterProperty = runtimeEntityType.AddProperty( "StringToUriConverterProperty", @@ -15357,27 +10457,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringToUriConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString(), - string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString()), + stringToUriConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString(), string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString()), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString(), - string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString()))); + new ValueConverter(string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString(), string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString()))); var timeOnly = runtimeEntityType.AddProperty( "TimeOnly", @@ -15411,20 +10496,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeOnly.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - clrType: typeof(TimeOnly), + timeOnly.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonTimeOnlyReaderWriter.Instance); var timeOnlyArray = runtimeEntityType.AddProperty( @@ -15458,37 +10530,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeOnlyArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + timeOnlyArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonTimeOnlyReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonTimeOnlyReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - clrType: typeof(TimeOnly), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonTimeOnlyReaderWriter.Instance)); var timeOnlyArrayElementType = timeOnlyArray.SetElementType(typeof(TimeOnly)); timeOnlyArrayElementType.TypeMapping = timeOnlyArray.TypeMapping.ElementTypeMapping; @@ -15525,27 +10574,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeOnlyToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o")), - TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)), + timeOnlyToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o")), TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o")), - TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)))); + new ValueConverter(string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o")), TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)))); timeOnlyToStringConverterProperty.SetSentinelFromProviderValue("00:00:00"); var timeOnlyToTicksConverterProperty = runtimeEntityType.AddProperty( @@ -15580,27 +10615,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeOnlyToTicksConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter( - long (TimeOnly v) => v.Ticks, - TimeOnly (long v) => new TimeOnly(v)), + timeOnlyToTicksConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(long (TimeOnly v) => v.Ticks, TimeOnly (long v) => new TimeOnly(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter( - long (TimeOnly v) => v.Ticks, - TimeOnly (long v) => new TimeOnly(v)))); + new ValueConverter(long (TimeOnly v) => v.Ticks, TimeOnly (long v) => new TimeOnly(v)))); timeOnlyToTicksConverterProperty.SetSentinelFromProviderValue(0L); var timeSpan = runtimeEntityType.AddProperty( @@ -15635,20 +10656,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeSpan.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - clrType: typeof(TimeSpan), + timeSpan.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonTimeSpanReaderWriter.Instance); var timeSpanArray = runtimeEntityType.AddProperty( @@ -15682,37 +10690,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeSpanArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + timeSpanArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonTimeSpanReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonTimeSpanReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - clrType: typeof(TimeSpan), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonTimeSpanReaderWriter.Instance)); var timeSpanArrayElementType = timeSpanArray.SetElementType(typeof(TimeSpan)); timeSpanArrayElementType.TypeMapping = timeSpanArray.TypeMapping.ElementTypeMapping; @@ -15749,27 +10734,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeSpanToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (TimeSpan v) => v.ToString("c"), - TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture)), + timeSpanToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (TimeSpan v) => v.ToString("c"), TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (TimeSpan v) => v.ToString("c"), - TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture)))); + new ValueConverter(string (TimeSpan v) => v.ToString("c"), TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture)))); timeSpanToStringConverterProperty.SetSentinelFromProviderValue("00:00:00"); var timeSpanToTicksConverterProperty = runtimeEntityType.AddProperty( @@ -15804,27 +10775,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeSpanToTicksConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter( - long (TimeSpan v) => v.Ticks, - TimeSpan (long v) => new TimeSpan(v)), + timeSpanToTicksConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(long (TimeSpan v) => v.Ticks, TimeSpan (long v) => new TimeSpan(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter( - long (TimeSpan v) => v.Ticks, - TimeSpan (long v) => new TimeSpan(v)))); + new ValueConverter(long (TimeSpan v) => v.Ticks, TimeSpan (long v) => new TimeSpan(v)))); timeSpanToTicksConverterProperty.SetSentinelFromProviderValue(0L); var uInt16 = runtimeEntityType.AddProperty( @@ -15859,20 +10816,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt16.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - clrType: typeof(ushort), + uInt16.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt16ReaderWriter.Instance); var uInt16Array = runtimeEntityType.AddProperty( @@ -15906,37 +10850,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + uInt16Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - clrType: typeof(ushort), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt16ReaderWriter.Instance)); var uInt16ArrayElementType = uInt16Array.SetElementType(typeof(ushort)); uInt16ArrayElementType.TypeMapping = uInt16Array.TypeMapping.ElementTypeMapping; @@ -15973,20 +10894,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt32.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - clrType: typeof(uint), + uInt32.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt32ReaderWriter.Instance); var uInt32Array = runtimeEntityType.AddProperty( @@ -16020,37 +10928,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + uInt32Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUInt32ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - clrType: typeof(uint), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt32ReaderWriter.Instance)); var uInt32ArrayElementType = uInt32Array.SetElementType(typeof(uint)); uInt32ArrayElementType.TypeMapping = uInt32Array.TypeMapping.ElementTypeMapping; @@ -16087,20 +10972,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt64.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - clrType: typeof(ulong), + uInt64.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt64ReaderWriter.Instance); var uInt64Array = runtimeEntityType.AddProperty( @@ -16134,37 +11006,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + uInt64Array.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUInt64ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - clrType: typeof(ulong), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonUInt64ReaderWriter.Instance)); var uInt64ArrayElementType = uInt64Array.SetElementType(typeof(ulong)); uInt64ArrayElementType.TypeMapping = uInt64Array.TypeMapping.ElementTypeMapping; @@ -16201,20 +11050,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt8.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + uInt8.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance); var uInt8Array = runtimeEntityType.AddProperty( @@ -16248,20 +11084,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - clrType: typeof(byte[]), + uInt8Array.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteArrayReaderWriter.Instance); var uInt8NestedCollection = runtimeEntityType.AddProperty( @@ -16295,37 +11118,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt8NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, byte[]>(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer, byte[]>(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + uInt8NestedCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, byte[]>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, byte[]>( JsonByteArrayReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, byte[]>( JsonByteArrayReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - clrType: typeof(byte[]), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteArrayReaderWriter.Instance)); var uInt8NestedCollectionElementType = uInt8NestedCollection.SetElementType(typeof(byte[])); uInt8NestedCollectionElementType.TypeMapping = uInt8NestedCollection.TypeMapping.ElementTypeMapping; @@ -16361,37 +11161,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt8ReadOnlyCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + uInt8ReadOnlyCollection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var uInt8ReadOnlyCollectionElementType = uInt8ReadOnlyCollection.SetElementType(typeof(byte)); uInt8ReadOnlyCollectionElementType.TypeMapping = uInt8ReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -16427,27 +11204,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uri.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + uri.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + UriToStringConverter.Instance)); var uriArray = runtimeEntityType.AddProperty( "UriArray", @@ -16480,52 +11243,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uriArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + uriArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))), + UriToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + UriToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))); + UriToStringConverter.Instance))); var uriArrayElementType = uriArray.SetElementType(typeof(Uri)); uriArrayElementType.TypeMapping = uriArray.TypeMapping.ElementTypeMapping; @@ -16561,27 +11296,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uriToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + uriToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (Uri v) => ((object)v).ToString(), - Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); var key = runtimeEntityType.AddKey( new[] { id }); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index be1f12f022a..837ebf491da 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -50,20 +50,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - principalDerivedId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + principalDerivedId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); @@ -83,20 +70,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: 1, storeGenerationIndex: 1); - principalDerivedAlternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + principalDerivedAlternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance); principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); @@ -117,20 +91,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: 2, storeGenerationIndex: 2); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -166,20 +127,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - details.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + details.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var number = runtimeEntityType.AddProperty( @@ -214,20 +162,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + number.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); var refTypeArray = runtimeEntityType.AddProperty( @@ -262,52 +197,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -343,37 +250,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -410,37 +294,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -477,52 +338,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -558,37 +391,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -625,37 +435,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -692,37 +479,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -759,37 +523,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index 0b8d7239051..6df64fd641f 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -52,20 +52,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - principalBaseId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + principalBaseId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); @@ -86,20 +73,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: 1, storeGenerationIndex: 1); - principalBaseAlternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + principalBaseAlternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance); principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); @@ -136,20 +110,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - details.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + details.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var number = runtimeEntityType.AddProperty( @@ -185,20 +146,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + number.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); var refTypeArray = runtimeEntityType.AddProperty( @@ -234,52 +182,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -316,37 +236,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -384,37 +281,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -452,52 +326,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -534,37 +380,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -602,37 +425,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -670,37 +470,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -738,37 +515,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index f150d6b05a4..36a72ac3bc4 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -69,24 +69,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var alternateId = runtimeEntityType.AddProperty( "AlternateId", @@ -122,20 +108,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 1, storeGenerationIndex: -1); - alternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + alternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance); alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); @@ -155,20 +128,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: -1, storeGenerationIndex: -1); - discriminator.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + discriminator.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var enum1 = runtimeEntityType.AddProperty( @@ -203,20 +163,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum1.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - clrType: typeof(CompiledModelTestBase.AnEnum), + enum1.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var enum2 = runtimeEntityType.AddProperty( @@ -251,23 +198,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum2.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - clrType: typeof(CompiledModelTestBase.AnEnum), + enum2.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); var flagsEnum1 = runtimeEntityType.AddProperty( "FlagsEnum1", @@ -301,20 +234,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum1.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - clrType: typeof(CompiledModelTestBase.AFlagsEnum), + flagsEnum1.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var flagsEnum2 = runtimeEntityType.AddProperty( @@ -350,20 +270,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum2.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - clrType: typeof(CompiledModelTestBase.AFlagsEnum), + flagsEnum2.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var refTypeArray = runtimeEntityType.AddProperty( @@ -398,52 +305,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -479,37 +358,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -546,37 +402,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -613,52 +446,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter( - string (IPAddress v) => ((object)v).ToString(), - IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -694,37 +499,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -761,37 +543,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -828,37 +587,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -895,37 +631,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index 51876ed82f8..1fbf6695b76 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; @@ -89,20 +87,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - derivedsId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + derivedsId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); @@ -161,20 +146,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 1, storeGenerationIndex: 1); - derivedsAlternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + derivedsAlternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance); derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); @@ -233,20 +205,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 2, storeGenerationIndex: 2); - principalsId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + principalsId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); @@ -305,20 +264,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 3, storeGenerationIndex: 3); - principalsAlternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + principalsAlternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance); principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); @@ -353,20 +299,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - rowid.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - clrType: typeof(byte[]), + rowid.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteArrayReaderWriter.Instance); var key = runtimeEntityType.AddKey( diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalBaseEntityType.cs index 22f2760f99b..8e7351b99e4 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalBaseEntityType.cs @@ -72,24 +72,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var discriminator = runtimeEntityType.AddProperty( "Discriminator", @@ -107,20 +93,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: -1, storeGenerationIndex: -1); - discriminator.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + discriminator.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var enum1 = runtimeEntityType.AddProperty( @@ -155,20 +128,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum1.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - clrType: typeof(CompiledModelTestBase.AnEnum), + enum1.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var enum2 = runtimeEntityType.AddProperty( @@ -203,23 +163,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum2.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - clrType: typeof(CompiledModelTestBase.AnEnum), + enum2.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); var flagsEnum1 = runtimeEntityType.AddProperty( "FlagsEnum1", @@ -253,20 +199,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum1.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - clrType: typeof(CompiledModelTestBase.AFlagsEnum), + flagsEnum1.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var flagsEnum2 = runtimeEntityType.AddProperty( @@ -301,20 +234,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum2.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - clrType: typeof(CompiledModelTestBase.AFlagsEnum), + flagsEnum2.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var principalBaseId = runtimeEntityType.AddProperty( @@ -332,24 +252,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: 1, storeGenerationIndex: 1); - principalBaseId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + principalBaseId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); principalBaseId.SetComparer(new NullableValueComparer(principalBaseId.TypeMapping.Comparer)); - principalBaseId.SetKeyComparer(new NullableValueComparer(principalBaseId.TypeMapping.KeyComparer)); var refTypeArray = runtimeEntityType.AddProperty( "RefTypeArray", @@ -383,44 +289,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -456,37 +342,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -523,37 +386,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -590,44 +430,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -663,37 +483,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -730,37 +527,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -797,37 +571,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -864,37 +615,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; @@ -1003,20 +731,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - details.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + details.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); details.AddAnnotation("foo", "bar"); @@ -1064,20 +779,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + number.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); var refTypeArray = complexType.AddProperty( @@ -1124,44 +826,24 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -1209,37 +891,14 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -1288,37 +947,14 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -1367,44 +1003,24 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -1452,37 +1068,14 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -1531,37 +1124,14 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -1610,37 +1180,14 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -1689,37 +1236,14 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; @@ -1827,20 +1351,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - alternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + alternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance); var enum1 = complexType.AddProperty( @@ -1889,20 +1400,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum1.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - clrType: typeof(CompiledModelTestBase.AnEnum), + enum1.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var enum2 = complexType.AddProperty( @@ -1951,23 +1449,9 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum2.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - clrType: typeof(CompiledModelTestBase.AnEnum), + enum2.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); var flagsEnum1 = complexType.AddProperty( "FlagsEnum1", @@ -2015,20 +1499,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum1.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - clrType: typeof(CompiledModelTestBase.AFlagsEnum), + flagsEnum1.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var flagsEnum2 = complexType.AddProperty( @@ -2077,20 +1548,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum2.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - clrType: typeof(CompiledModelTestBase.AFlagsEnum), + flagsEnum2.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var id = complexType.AddProperty( @@ -2139,23 +1597,9 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var refTypeArray = complexType.AddProperty( "RefTypeArray", @@ -2203,44 +1647,24 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -2290,37 +1714,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -2371,37 +1772,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -2452,44 +1830,24 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -2539,37 +1897,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -2620,37 +1955,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -2701,37 +2013,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -2782,37 +2071,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalDerivedEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalDerivedEntityType.cs index b399a32a2c1..fa505a756a1 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalDerivedEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalDerivedEntityType.cs @@ -124,23 +124,9 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); return complexProperty; } @@ -250,20 +236,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - details.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + details.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); details.AddAnnotation("foo", "bar"); @@ -321,20 +294,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + number.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); var refTypeArray = complexType.AddProperty( @@ -391,44 +351,24 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -486,37 +426,14 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -575,37 +492,14 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -664,44 +558,24 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -759,37 +633,14 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -848,37 +699,14 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -937,37 +765,14 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -1026,37 +831,14 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; @@ -1184,20 +966,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - alternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + alternateId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance); var enum1 = complexType.AddProperty( @@ -1256,20 +1025,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum1.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - clrType: typeof(CompiledModelTestBase.AnEnum), + enum1.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var enum2 = complexType.AddProperty( @@ -1328,23 +1084,9 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum2.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - clrType: typeof(CompiledModelTestBase.AnEnum), + enum2.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); var flagsEnum1 = complexType.AddProperty( "FlagsEnum1", @@ -1402,20 +1144,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum1.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - clrType: typeof(CompiledModelTestBase.AFlagsEnum), + flagsEnum1.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var flagsEnum2 = complexType.AddProperty( @@ -1474,20 +1203,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum2.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - clrType: typeof(CompiledModelTestBase.AFlagsEnum), + flagsEnum2.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var id = complexType.AddProperty( @@ -1546,23 +1262,9 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var refTypeArray = complexType.AddProperty( "RefTypeArray", @@ -1620,44 +1322,24 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -1717,37 +1399,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -1808,37 +1467,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -1899,44 +1535,24 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -1996,37 +1612,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -2087,37 +1680,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -2178,37 +1748,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -2269,37 +1816,14 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_provider_value_comparer/MyEntityEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_provider_value_comparer/MyEntityEntityType.cs index aa01de98b60..b97ab3c1a72 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_provider_value_comparer/MyEntityEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_provider_value_comparer/MyEntityEntityType.cs @@ -87,20 +87,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetProviderValueComparer(new ValueComparer( diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_type_mapping/MyEntityEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_type_mapping/MyEntityEntityType.cs index 8adb9fa963c..090dff9ae20 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_type_mapping/MyEntityEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_type_mapping/MyEntityEntityType.cs @@ -86,20 +86,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_value_comparer/MyEntityEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_value_comparer/MyEntityEntityType.cs index e814960cc3e..e9492f815e5 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_value_comparer/MyEntityEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_value_comparer/MyEntityEntityType.cs @@ -87,20 +87,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new ValueComparer( diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_value_converter/MyEntityEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_value_converter/MyEntityEntityType.cs index 0c955abddc7..c8389f8b8ad 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_value_converter/MyEntityEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Custom_value_converter/MyEntityEntityType.cs @@ -88,19 +88,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (int i) => JsonSerializer.Serialize(i, (JsonSerializerOptions)(null)), int (string i) => JsonSerializer.Deserialize(i, (JsonSerializerOptions)(null))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Fully_qualified_model/IdentityUserEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Fully_qualified_model/IdentityUserEntityType.cs index 64720f9135d..932041437b0 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Fully_qualified_model/IdentityUserEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Fully_qualified_model/IdentityUserEntityType.cs @@ -64,20 +64,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -113,20 +100,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - accessFailedCount.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + accessFailedCount.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); var concurrencyStamp = runtimeEntityType.AddProperty( @@ -161,20 +135,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - concurrencyStamp.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + concurrencyStamp.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var discriminator = runtimeEntityType.AddProperty( @@ -193,20 +154,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: -1, storeGenerationIndex: -1); - discriminator.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + discriminator.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var email = runtimeEntityType.AddProperty( @@ -241,20 +189,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - email.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + email.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var emailConfirmed = runtimeEntityType.AddProperty( @@ -289,20 +224,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - emailConfirmed.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + emailConfirmed.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance); var lockoutEnabled = runtimeEntityType.AddProperty( @@ -337,20 +259,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - lockoutEnabled.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + lockoutEnabled.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance); var lockoutEnd = runtimeEntityType.AddProperty( @@ -385,23 +294,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - lockoutEnd.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - clrType: typeof(DateTimeOffset), + lockoutEnd.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeOffsetReaderWriter.Instance); lockoutEnd.SetComparer(new NullableValueComparer(lockoutEnd.TypeMapping.Comparer)); - lockoutEnd.SetKeyComparer(new NullableValueComparer(lockoutEnd.TypeMapping.KeyComparer)); var normalizedEmail = runtimeEntityType.AddProperty( "NormalizedEmail", @@ -435,20 +330,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - normalizedEmail.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + normalizedEmail.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var normalizedUserName = runtimeEntityType.AddProperty( @@ -483,20 +365,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - normalizedUserName.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + normalizedUserName.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var passwordHash = runtimeEntityType.AddProperty( @@ -531,20 +400,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - passwordHash.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + passwordHash.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var phoneNumber = runtimeEntityType.AddProperty( @@ -579,20 +435,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - phoneNumber.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + phoneNumber.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var phoneNumberConfirmed = runtimeEntityType.AddProperty( @@ -627,20 +470,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - phoneNumberConfirmed.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + phoneNumberConfirmed.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance); var securityStamp = runtimeEntityType.AddProperty( @@ -675,20 +505,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - securityStamp.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + securityStamp.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var twoFactorEnabled = runtimeEntityType.AddProperty( @@ -723,20 +540,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - twoFactorEnabled.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - clrType: typeof(bool), + twoFactorEnabled.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonBoolReaderWriter.Instance); var userName = runtimeEntityType.AddProperty( @@ -771,20 +575,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - userName.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + userName.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var key = runtimeEntityType.AddKey( diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Fully_qualified_model/IndexEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Fully_qualified_model/IndexEntityType.cs index 048a82be6fb..40b5f71ae6c 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Fully_qualified_model/IndexEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Fully_qualified_model/IndexEntityType.cs @@ -62,20 +62,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - clrType: typeof(Guid), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonGuidReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Fully_qualified_model/ScaffoldingEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Fully_qualified_model/ScaffoldingEntityType.cs index c523541931e..94c30988d8c 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Fully_qualified_model/ScaffoldingEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Fully_qualified_model/ScaffoldingEntityType.cs @@ -62,20 +62,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Global_namespace/EntityType1.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Global_namespace/EntityType1.cs index cb3c09a790e..907d60b1be0 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Global_namespace/EntityType1.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Global_namespace/EntityType1.cs @@ -84,20 +84,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_manual/LazyProxiesEntity3EntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_manual/LazyProxiesEntity3EntityType.cs index 53ff2c367b7..55a52417c8e 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_manual/LazyProxiesEntity3EntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_manual/LazyProxiesEntity3EntityType.cs @@ -63,20 +63,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -112,20 +99,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - name.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + name.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var lazyLoader = runtimeEntityType.AddServiceProperty( diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_manual/LazyProxiesEntity4EntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_manual/LazyProxiesEntity4EntityType.cs index 24bb9d86dc2..3c3d5120665 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_manual/LazyProxiesEntity4EntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_manual/LazyProxiesEntity4EntityType.cs @@ -65,20 +65,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -114,20 +101,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - content.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + content.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var referenceNavigationId = runtimeEntityType.AddProperty( @@ -145,20 +119,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 1, storeGenerationIndex: 0); - referenceNavigationId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + referenceNavigationId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); referenceNavigationId.SetCurrentValueComparer(new EntryCurrentValueComparer(referenceNavigationId)); @@ -194,20 +155,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - title.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + title.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var lazyLoader = runtimeEntityType.AddServiceProperty( diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_proxies/LazyProxiesEntity1EntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_proxies/LazyProxiesEntity1EntityType.cs index 5539f9bcf9b..576f278eefc 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_proxies/LazyProxiesEntity1EntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_proxies/LazyProxiesEntity1EntityType.cs @@ -67,20 +67,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -99,24 +86,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 1, storeGenerationIndex: 1); - referenceNavigationId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + referenceNavigationId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); referenceNavigationId.SetCurrentValueComparer(new EntryCurrentValueComparer(referenceNavigationId)); referenceNavigationId.SetComparer(new NullableValueComparer(referenceNavigationId.TypeMapping.Comparer)); - referenceNavigationId.SetKeyComparer(new NullableValueComparer(referenceNavigationId.TypeMapping.KeyComparer)); var lazyLoader = runtimeEntityType.AddServiceProperty( "LazyLoader", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_proxies/LazyProxiesEntity2EntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_proxies/LazyProxiesEntity2EntityType.cs index b00e9852b5a..7ddb161dd66 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_proxies/LazyProxiesEntity2EntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Lazy_loading_proxies/LazyProxiesEntity2EntityType.cs @@ -64,20 +64,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Manual_lazy_loading/LazyConstructorEntityEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Manual_lazy_loading/LazyConstructorEntityEntityType.cs index 65e488282c1..e8fffa0406e 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Manual_lazy_loading/LazyConstructorEntityEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Manual_lazy_loading/LazyConstructorEntityEntityType.cs @@ -64,20 +64,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Manual_lazy_loading/LazyPropertyDelegateEntityEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Manual_lazy_loading/LazyPropertyDelegateEntityEntityType.cs index 254fdb05e6d..4a659964aa0 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Manual_lazy_loading/LazyPropertyDelegateEntityEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Manual_lazy_loading/LazyPropertyDelegateEntityEntityType.cs @@ -66,20 +66,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -115,20 +102,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 1, storeGenerationIndex: 1); - lazyConstructorEntityId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + lazyConstructorEntityId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); lazyConstructorEntityId.SetCurrentValueComparer(new EntryCurrentValueComparer(lazyConstructorEntityId)); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Manual_lazy_loading/LazyPropertyEntityEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Manual_lazy_loading/LazyPropertyEntityEntityType.cs index bffdfee1277..f22c0dd7423 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Manual_lazy_loading/LazyPropertyEntityEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Manual_lazy_loading/LazyPropertyEntityEntityType.cs @@ -66,20 +66,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -115,20 +102,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 1, storeGenerationIndex: 1); - lazyConstructorEntityId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + lazyConstructorEntityId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); lazyConstructorEntityId.SetCurrentValueComparer(new EntryCurrentValueComparer(lazyConstructorEntityId)); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs index c6b2639b43e..f3b064d156e 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs @@ -6,6 +6,7 @@ using System.Reflection; using System.Text; using Microsoft.EntityFrameworkCore.ChangeTracking; +using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; using Microsoft.EntityFrameworkCore.InMemory.Storage.Internal; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; @@ -73,19 +74,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas typeof(bool), propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolToStringConverterProperty", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); - boolToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + boolToStringConverterProperty.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (bool v) => ((string)((v ? "B" : "A"))), bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/DependentBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/DependentBaseEntityType.cs index a7673970c85..21c0a53ef49 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/DependentBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/DependentBaseEntityType.cs @@ -64,24 +64,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var principalId = runtimeEntityType.AddProperty( "PrincipalId", @@ -99,20 +85,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 1, storeGenerationIndex: 1); - principalId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + principalId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/PrincipalBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/PrincipalBaseEntityType.cs index d614c505062..6e93dc32f06 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/PrincipalBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/PrincipalBaseEntityType.cs @@ -69,24 +69,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var discriminator = runtimeEntityType.AddProperty( "Discriminator", @@ -104,20 +90,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: -1, storeGenerationIndex: -1); - discriminator.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + discriminator.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var enum1 = runtimeEntityType.AddProperty( @@ -152,20 +125,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum1.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - clrType: typeof(CompiledModelTestBase.AnEnum), + enum1.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var enum2 = runtimeEntityType.AddProperty( @@ -200,23 +160,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - enum2.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - clrType: typeof(CompiledModelTestBase.AnEnum), + enum2.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); var flagsEnum1 = runtimeEntityType.AddProperty( "FlagsEnum1", @@ -250,20 +196,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - flagsEnum1.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - clrType: typeof(CompiledModelTestBase.AFlagsEnum), + flagsEnum1.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonSignedEnumReaderWriter.Instance); var principalId = runtimeEntityType.AddProperty( @@ -282,20 +215,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: 1, storeGenerationIndex: 1); - principalId.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + principalId.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); @@ -331,44 +251,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -404,37 +304,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeEnumerableElementType = refTypeEnumerable.SetElementType(typeof(string)); refTypeEnumerableElementType.TypeMapping = refTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -471,37 +348,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance)); var refTypeIListElementType = refTypeIList.SetElementType(typeof(string)); refTypeIListElementType.TypeMapping = refTypeIList.TypeMapping.ElementTypeMapping; @@ -538,44 +392,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + refTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + IPAddressToStringConverter.Instance)), + elementMapping: InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -611,37 +445,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeArray.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - clrType: typeof(DateTime), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonDateTimeReaderWriter.Instance)); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; @@ -678,37 +489,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeEnumerable.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; @@ -745,37 +533,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeIList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - clrType: typeof(byte), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonByteReaderWriter.Instance)); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; @@ -812,37 +577,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + valueTypeList.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - clrType: typeof(short), + elementMapping: InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt16ReaderWriter.Instance)); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Self_referential_property/SelfReferentialEntityEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Self_referential_property/SelfReferentialEntityEntityType.cs index 7fd7c68d8bf..1277fbbac0d 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Self_referential_property/SelfReferentialEntityEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Self_referential_property/SelfReferentialEntityEntityType.cs @@ -63,20 +63,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - clrType: typeof(long), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -113,19 +100,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - collection.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelInMemoryTest.SelfReferentialProperty v1, CompiledModelInMemoryTest.SelfReferentialProperty v2) => object.Equals(v1, v2), - int (CompiledModelInMemoryTest.SelfReferentialProperty v) => ((object)v).GetHashCode(), - CompiledModelInMemoryTest.SelfReferentialProperty (CompiledModelInMemoryTest.SelfReferentialProperty v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelInMemoryTest.SelfReferentialProperty v1, CompiledModelInMemoryTest.SelfReferentialProperty v2) => object.Equals(v1, v2), - int (CompiledModelInMemoryTest.SelfReferentialProperty v) => ((object)v).GetHashCode(), - CompiledModelInMemoryTest.SelfReferentialProperty (CompiledModelInMemoryTest.SelfReferentialProperty v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + collection.TypeMapping = InMemoryTypeMapping.Default.Clone( + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (CompiledModelInMemoryTest.SelfReferentialProperty v) => CompiledModelInMemoryTest.SelfReferentialEntity.NonGeneric.SelfReferentialPropertyValueConverter.ToProvider(v), CompiledModelInMemoryTest.SelfReferentialProperty (string v) => CompiledModelInMemoryTest.SelfReferentialEntity.NonGeneric.SelfReferentialPropertyValueConverter.FromProvider(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs index 6c39098e2b7..ec6b836fba1 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs @@ -61,20 +61,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - clrType: typeof(int), + id.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -110,20 +97,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - data.TypeMapping = InMemoryTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - clrType: typeof(string), + data.TypeMapping = InMemoryTypeMapping.Default.Clone( jsonValueReaderWriter: JsonStringReaderWriter.Instance); var key = runtimeEntityType.AddKey( diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/CompiledModelInMemoryTest.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/CompiledModelInMemoryTest.cs index 254cecb2d74..8b0c42c25bf 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/CompiledModelInMemoryTest.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/CompiledModelInMemoryTest.cs @@ -418,7 +418,7 @@ public virtual Task Custom_type_mapping() "MyEntity", e => { e.Property("Id").Metadata.SetTypeMapping( - new InMemoryTypeMapping(typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance)); + new InMemoryTypeMapping(jsonValueReaderWriter: JsonInt32ReaderWriter.Instance)); e.HasKey("Id"); }), model => @@ -426,7 +426,7 @@ public virtual Task Custom_type_mapping() var entityType = model.GetEntityTypes().Single(); var typeMapping = entityType.FindProperty("Id")!.FindTypeMapping()!; - Assert.IsType(typeMapping); + Assert.IsType>(typeMapping); Assert.IsType(typeMapping.JsonValueReaderWriter); }); diff --git a/test/EFCore.Relational.Tests/Metadata/RelationalModelTest.cs b/test/EFCore.Relational.Tests/Metadata/RelationalModelTest.cs index ad5c4de0702..a790107599d 100644 --- a/test/EFCore.Relational.Tests/Metadata/RelationalModelTest.cs +++ b/test/EFCore.Relational.Tests/Metadata/RelationalModelTest.cs @@ -3775,13 +3775,13 @@ public void Json_element_tree_is_built_for_primitive_collection_columns() var tags = b.PrimitiveCollection(e => e.Tags); tags.Metadata.SetTypeMapping( (RelationalTypeMapping)new StringTypeMapping("json", null).Clone( - clrType: typeof(List), + converter: new ValueConverter, string>(v => null!, v => null!), elementMapping: new StringTypeMapping("nvarchar(max)", null))); var enumValues = b.PrimitiveCollection(e => e.EnumValues); enumValues.Metadata.SetTypeMapping( (RelationalTypeMapping)new StringTypeMapping("json", null).Clone( - clrType: typeof(List), + converter: new ValueConverter, string>(v => null!, v => null!), elementMapping: new IntTypeMapping("int"))); enumValues.ElementType(b => b.HasConversion()); }); diff --git a/test/EFCore.Specification.Tests/Query/PrimitiveCollectionsQueryTestBase.cs b/test/EFCore.Specification.Tests/Query/PrimitiveCollectionsQueryTestBase.cs index 51d911cdc4a..296e99e9685 100644 --- a/test/EFCore.Specification.Tests/Query/PrimitiveCollectionsQueryTestBase.cs +++ b/test/EFCore.Specification.Tests/Query/PrimitiveCollectionsQueryTestBase.cs @@ -650,7 +650,7 @@ public virtual Task Parameter_collection_Count_with_huge_number_of_values_over_5 } [Fact] - public virtual Task Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping() + public virtual Task Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_property() { if (NumberOfValuesForHugeParameterCollectionTests is null) { @@ -660,9 +660,6 @@ public virtual Task Parameter_collection_Count_with_huge_number_of_values_over_2 var extra = Enumerable.Range(1000, (int)NumberOfValuesForHugeParameterCollectionTests / 3); var ids = new[] { 2, 999 }; - // Id will have a different type mapping here. - // Very specific, kind of fragile, but at least something. - // More info efcore#37185. return AssertQuery(ss => ss.Set() .Where(c => ids.Count(i => i > c.Id) > 0) .Where(c => extra.Count(i => i > c.Id) > 0) @@ -825,7 +822,7 @@ await AssertQuery(ss => ss.Set() } [Fact] - public virtual async Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping() + public virtual async Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_property() { if (NumberOfValuesForHugeParameterCollectionTests is null) { @@ -835,9 +832,7 @@ public virtual async Task Parameter_collection_of_ints_Contains_int_with_huge_nu var extra = Enumerable.Range(10, (int)NumberOfValuesForHugeParameterCollectionTests / 3).Append(1); var ints = new[] { 10, 999 }; - // Id will have a different type mapping here. - // Very specific, kind of fragile, but at least something. - // More info efcore#37185. + // Reusing the same large collection across predicates summed over occurrences triggers fallback; see #37185. await AssertQuery(ss => ss.Set() .Where(c => ints.Contains(c.Int)) .Where(c => extra.Contains(c.Int)) diff --git a/test/EFCore.Specification.Tests/Scaffolding/CompiledModelTestBase.cs b/test/EFCore.Specification.Tests/Scaffolding/CompiledModelTestBase.cs index ee8e80dd5ae..bba3abce0f9 100644 --- a/test/EFCore.Specification.Tests/Scaffolding/CompiledModelTestBase.cs +++ b/test/EFCore.Specification.Tests/Scaffolding/CompiledModelTestBase.cs @@ -77,13 +77,13 @@ public static class Dummy [Fact] public virtual Task No_NativeAOT() - => BigModel(false); + => TestBigModel(false); [Fact] public virtual Task BigModel() - => BigModel(true); + => TestBigModel(true); - protected virtual Task BigModel(bool forNativeAot, [CallerMemberName] string testName = "") + protected virtual Task TestBigModel(bool forNativeAot, [CallerMemberName] string testName = "") => Test( modelBuilder => BuildBigModel(modelBuilder, jsonColumns: false), model => AssertBigModel(model, jsonColumns: false), diff --git a/test/EFCore.SqlServer.FunctionalTests/BulkUpdates/NonSharedModelBulkUpdatesSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/BulkUpdates/NonSharedModelBulkUpdatesSqlServerTest.cs index 068adee4a38..e9390f8ceef 100644 --- a/test/EFCore.SqlServer.FunctionalTests/BulkUpdates/NonSharedModelBulkUpdatesSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/BulkUpdates/NonSharedModelBulkUpdatesSqlServerTest.cs @@ -104,7 +104,7 @@ public override async Task Update_non_owned_property_on_entity_with_owned2(bool """ SET NOCOUNT OFF; UPDATE [o] -SET [o].[Title] = COALESCE([o].[Title], N'') + N'_Suffix' +SET [o].[Title] = ISNULL([o].[Title], N'') + N'_Suffix' FROM [Owner] AS [o] """); } @@ -202,7 +202,7 @@ public override async Task Update_with_alias_uniquification_in_setter_subquery(b SET NOCOUNT OFF; UPDATE [o] SET [o].[Total] = ( - SELECT COALESCE(SUM([o0].[Amount]), 0) + SELECT ISNULL(SUM([o0].[Amount]), 0) FROM [OrderProduct] AS [o0] WHERE [o].[Id] = [o0].[OrderId]) FROM [Orders] AS [o] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocMiscellaneousQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocMiscellaneousQuerySqlServerTest.cs index ab29ff6bd3a..0ffb2e69d08 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocMiscellaneousQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocMiscellaneousQuerySqlServerTest.cs @@ -2360,7 +2360,7 @@ public override async Task Enum_with_value_converter_matching_take_value(bool as @orderItemType='MyType1' (Nullable = false) (Size = 4000) @p='1' -SELECT [o1].[Id], COALESCE(( +SELECT [o1].[Id], ISNULL(( SELECT TOP(1) [o3].[Price] FROM [OrderItems] AS [o3] WHERE [o1].[Id] = [o3].[OrderId] AND [o3].[Type] = @orderItemType), 0.0E0) AS [SpecialSum] @@ -2442,8 +2442,8 @@ public override async Task Group_by_aggregate_in_subquery_projection_after_group AssertSql( """ -SELECT [t].[Value] AS [A], COALESCE(SUM([t].[Id]), 0) AS [B], COALESCE(( - SELECT TOP(1) COALESCE(SUM([t].[Id]), 0) + COALESCE(SUM([t0].[Id]), 0) +SELECT [t].[Value] AS [A], ISNULL(SUM([t].[Id]), 0) AS [B], ISNULL(( + SELECT TOP(1) ISNULL(SUM([t].[Id]), 0) + ISNULL(SUM([t0].[Id]), 0) FROM [Tables] AS [t0] GROUP BY [t0].[Value] ORDER BY (SELECT 1)), 0) AS [C] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocNavigationsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocNavigationsQuerySqlServerTest.cs index 0a42d17bbf3..de887c25838 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocNavigationsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocNavigationsQuerySqlServerTest.cs @@ -337,14 +337,14 @@ ORDER BY [a].[Id] SELECT [a].[Id], [a].[ActivityTypeId], [a].[DateTime], [a].[Points], ( SELECT TOP(1) [c].[Id] FROM [CompetitionSeasons] AS [c] - WHERE [c].[StartDate] <= [a].[DateTime] AND [a].[DateTime] < [c].[EndDate]) AS [CompetitionSeasonId], COALESCE([a].[Points], ( + WHERE [c].[StartDate] <= [a].[DateTime] AND [a].[DateTime] < [c].[EndDate]) AS [CompetitionSeasonId], ISNULL(ISNULL([a].[Points], ( SELECT TOP(1) [a1].[Points] FROM [ActivityTypePoints] AS [a1] INNER JOIN [CompetitionSeasons] AS [c0] ON [a1].[CompetitionSeasonId] = [c0].[Id] WHERE [a0].[Id] = [a1].[ActivityTypeId] AND [c0].[Id] = ( SELECT TOP(1) [c1].[Id] FROM [CompetitionSeasons] AS [c1] - WHERE [c1].[StartDate] <= [a].[DateTime] AND [a].[DateTime] < [c1].[EndDate])), 0) AS [Points] + WHERE [c1].[StartDate] <= [a].[DateTime] AND [a].[DateTime] < [c1].[EndDate]))), 0) AS [Points] FROM [Activities] AS [a] INNER JOIN [ActivityType] AS [a0] ON [a].[ActivityTypeId] = [a0].[Id] """); diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexJson/ComplexJsonCollectionSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexJson/ComplexJsonCollectionSqlServerTest.cs index 094446832bb..6e834dfa2e4 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexJson/ComplexJsonCollectionSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexJson/ComplexJsonCollectionSqlServerTest.cs @@ -306,7 +306,7 @@ public override async Task GroupBy() SELECT [r].[Id], [r].[Name], [r].[AssociateCollection], [r].[OptionalAssociate], [r].[RequiredAssociate] FROM [RootEntity] AS [r] WHERE 16 IN ( - SELECT COALESCE(SUM([a].[Int]), 0) + SELECT ISNULL(SUM([a].[Int]), 0) FROM OPENJSON([r].[AssociateCollection], '$') WITH ( [Int] int '$.Int', [String] nvarchar(max) '$.String' @@ -327,7 +327,7 @@ public override async Task Select_within_Select_within_Select_with_aggregates() AssertSql( """ SELECT ( - SELECT COALESCE(SUM([s].[value]), 0) + SELECT ISNULL(SUM([s].[value]), 0) FROM OPENJSON([r].[AssociateCollection], '$') WITH ([NestedCollection] json '$.NestedCollection' AS JSON) AS [a] OUTER APPLY ( SELECT MAX([n].[Int]) AS [value] @@ -341,7 +341,7 @@ FROM [RootEntity] AS [r] AssertSql( """ SELECT ( - SELECT COALESCE(SUM([s].[value]), 0) + SELECT ISNULL(SUM([s].[value]), 0) FROM OPENJSON([r].[AssociateCollection], '$') WITH ([NestedCollection] nvarchar(max) '$.NestedCollection' AS JSON) AS [a] OUTER APPLY ( SELECT MAX([n].[Int]) AS [value] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexJson/ComplexJsonPrimitiveCollectionSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexJson/ComplexJsonPrimitiveCollectionSqlServerTest.cs index 2bc87f82f79..0e42988ab68 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexJson/ComplexJsonPrimitiveCollectionSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexJson/ComplexJsonPrimitiveCollectionSqlServerTest.cs @@ -119,11 +119,11 @@ public override async Task Select_Sum() AssertSql( """ SELECT ( - SELECT COALESCE(SUM([i0].[value]), 0) + SELECT ISNULL(SUM([i0].[value]), 0) FROM OPENJSON(JSON_QUERY([r].[RequiredAssociate], '$.Ints')) WITH ([value] int '$') AS [i0]) FROM [RootEntity] AS [r] WHERE ( - SELECT COALESCE(SUM([i].[value]), 0) + SELECT ISNULL(SUM([i].[value]), 0) FROM OPENJSON(JSON_QUERY([r].[RequiredAssociate], '$.Ints')) WITH ([value] int '$') AS [i]) >= 6 """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexJson/ComplexJsonSetOperationsSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexJson/ComplexJsonSetOperationsSqlServerTest.cs index 68dda65a13b..99921a420b1 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexJson/ComplexJsonSetOperationsSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexJson/ComplexJsonSetOperationsSqlServerTest.cs @@ -44,7 +44,7 @@ public override async Task Over_assocate_collection_Select_nested_with_aggregate AssertSql( """ SELECT ( - SELECT COALESCE(SUM([s].[value]), 0) + SELECT ISNULL(SUM([s].[value]), 0) FROM ( SELECT [a].[NestedCollection] AS [NestedCollection] FROM OPENJSON([r].[AssociateCollection], '$') WITH ( @@ -61,7 +61,7 @@ [NestedCollection] json '$.NestedCollection' AS JSON WHERE [a0].[String] = N'foo' ) AS [u] OUTER APPLY ( - SELECT COALESCE(SUM([n].[Int]), 0) AS [value] + SELECT ISNULL(SUM([n].[Int]), 0) AS [value] FROM OPENJSON([u].[NestedCollection], '$') WITH ([Int] int '$.Int') AS [n] ) AS [s]) FROM [RootEntity] AS [r] @@ -72,7 +72,7 @@ FROM [RootEntity] AS [r] AssertSql( """ SELECT ( - SELECT COALESCE(SUM([s].[value]), 0) + SELECT ISNULL(SUM([s].[value]), 0) FROM ( SELECT [a].[NestedCollection] AS [NestedCollection] FROM OPENJSON([r].[AssociateCollection], '$') WITH ( @@ -89,7 +89,7 @@ [NestedCollection] nvarchar(max) '$.NestedCollection' AS JSON WHERE [a0].[String] = N'foo' ) AS [u] OUTER APPLY ( - SELECT COALESCE(SUM([n].[Int]), 0) AS [value] + SELECT ISNULL(SUM([n].[Int]), 0) AS [value] FROM OPENJSON([u].[NestedCollection], '$') WITH ([Int] int '$.Int') AS [n] ) AS [s]) FROM [RootEntity] AS [r] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexTableSplitting/ComplexTableSplittingPrimitiveCollectionSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexTableSplitting/ComplexTableSplittingPrimitiveCollectionSqlServerTest.cs index 7492ad4c09b..6a62d81acf3 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexTableSplitting/ComplexTableSplittingPrimitiveCollectionSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/ComplexTableSplitting/ComplexTableSplittingPrimitiveCollectionSqlServerTest.cs @@ -85,11 +85,11 @@ public override async Task Select_Sum() AssertSql( """ SELECT ( - SELECT COALESCE(SUM([r1].[value]), 0) + SELECT ISNULL(SUM([r1].[value]), 0) FROM OPENJSON([r].[RequiredAssociate_Ints]) WITH ([value] int '$') AS [r1]) FROM [RootEntity] AS [r] WHERE ( - SELECT COALESCE(SUM([r0].[value]), 0) + SELECT ISNULL(SUM([r0].[value]), 0) FROM OPENJSON([r].[RequiredAssociate_Ints]) WITH ([value] int '$') AS [r0]) >= 6 """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/Navigations/NavigationsCollectionSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/Navigations/NavigationsCollectionSqlServerTest.cs index 83cb7deb84b..9ad57e0470a 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/Navigations/NavigationsCollectionSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/Navigations/NavigationsCollectionSqlServerTest.cs @@ -242,7 +242,7 @@ FROM [AssociateType] AS [a2] LEFT JOIN [NestedAssociateType] AS [n6] ON [a0].[Id] = [n6].[CollectionAssociateId] LEFT JOIN [NestedAssociateType] AS [n7] ON [a1].[Id] = [n7].[CollectionAssociateId] WHERE 16 IN ( - SELECT COALESCE(SUM([a].[Int]), 0) + SELECT ISNULL(SUM([a].[Int]), 0) FROM [AssociateType] AS [a] WHERE [r].[Id] = [a].[CollectionRootId] GROUP BY [a].[String] @@ -260,7 +260,7 @@ public override async Task Select_within_Select_within_Select_with_aggregates() AssertSql( """ SELECT ( - SELECT COALESCE(SUM([s].[value]), 0) + SELECT ISNULL(SUM([s].[value]), 0) FROM [AssociateType] AS [a] OUTER APPLY ( SELECT MAX([n].[Int]) AS [value] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/Navigations/NavigationsPrimitiveCollectionSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/Navigations/NavigationsPrimitiveCollectionSqlServerTest.cs index febded24fd0..f176c183705 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/Navigations/NavigationsPrimitiveCollectionSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/Navigations/NavigationsPrimitiveCollectionSqlServerTest.cs @@ -163,12 +163,12 @@ public override async Task Select_Sum() AssertSql( """ SELECT ( - SELECT COALESCE(SUM([i0].[value]), 0) + SELECT ISNULL(SUM([i0].[value]), 0) FROM OPENJSON([a].[Ints]) WITH ([value] int '$') AS [i0]) FROM [RootEntity] AS [r] INNER JOIN [AssociateType] AS [a] ON [r].[RequiredAssociateId] = [a].[Id] WHERE ( - SELECT COALESCE(SUM([i].[value]), 0) + SELECT ISNULL(SUM([i].[value]), 0) FROM OPENJSON([a].[Ints]) WITH ([value] int '$') AS [i]) >= 6 """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/Navigations/NavigationsSetOperationsSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/Navigations/NavigationsSetOperationsSqlServerTest.cs index 388999800e2..25ffe054a92 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/Navigations/NavigationsSetOperationsSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/Navigations/NavigationsSetOperationsSqlServerTest.cs @@ -60,7 +60,7 @@ public override async Task Over_assocate_collection_Select_nested_with_aggregate AssertSql( """ SELECT ( - SELECT COALESCE(SUM([s].[value]), 0) + SELECT ISNULL(SUM([s].[value]), 0) FROM ( SELECT [a].[Id] FROM [AssociateType] AS [a] @@ -71,7 +71,7 @@ FROM [AssociateType] AS [a0] WHERE [r].[Id] = [a0].[CollectionRootId] AND [a0].[String] = N'foo' ) AS [u] OUTER APPLY ( - SELECT COALESCE(SUM([n].[Int]), 0) AS [value] + SELECT ISNULL(SUM([n].[Int]), 0) AS [value] FROM [NestedAssociateType] AS [n] WHERE [u].[Id] = [n].[CollectionAssociateId] ) AS [s]) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedJson/OwnedJsonCollectionSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedJson/OwnedJsonCollectionSqlServerTest.cs index 1487014c9c8..1e9d2e4f8bf 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedJson/OwnedJsonCollectionSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedJson/OwnedJsonCollectionSqlServerTest.cs @@ -363,7 +363,7 @@ public override async Task GroupBy() SELECT [r].[Id], [r].[Name], [r].[AssociateCollection], [r].[OptionalAssociate], [r].[RequiredAssociate] FROM [RootEntity] AS [r] WHERE 16 IN ( - SELECT COALESCE(SUM([a].[Int]), 0) + SELECT ISNULL(SUM([a].[Int]), 0) FROM OPENJSON([r].[AssociateCollection], '$') WITH ( [Int] int '$.Int', [String] nvarchar(max) '$.String' @@ -379,7 +379,7 @@ GROUP BY [a].[String] SELECT [r].[Id], [r].[Name], [r].[AssociateCollection], [r].[OptionalAssociate], [r].[RequiredAssociate] FROM [RootEntity] AS [r] WHERE 16 IN ( - SELECT COALESCE(SUM([a].[Int]), 0) + SELECT ISNULL(SUM([a].[Int]), 0) FROM OPENJSON([r].[AssociateCollection], '$') WITH ( [Int] int '$.Int', [String] nvarchar(max) '$.String' @@ -402,7 +402,7 @@ public override async Task Select_within_Select_within_Select_with_aggregates() AssertSql( """ SELECT ( - SELECT COALESCE(SUM([s].[value]), 0) + SELECT ISNULL(SUM([s].[value]), 0) FROM OPENJSON([r].[AssociateCollection], '$') WITH ([NestedCollection] json '$.NestedCollection' AS JSON) AS [a] OUTER APPLY ( SELECT MAX([n].[Int]) AS [value] @@ -416,7 +416,7 @@ FROM [RootEntity] AS [r] AssertSql( """ SELECT ( - SELECT COALESCE(SUM([s].[value]), 0) + SELECT ISNULL(SUM([s].[value]), 0) FROM OPENJSON([r].[AssociateCollection], '$') WITH ([NestedCollection] nvarchar(max) '$.NestedCollection' AS JSON) AS [a] OUTER APPLY ( SELECT MAX([n].[Int]) AS [value] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedJson/OwnedJsonPrimitiveCollectionSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedJson/OwnedJsonPrimitiveCollectionSqlServerTest.cs index 1a04c0a2bfd..00f4146f0cd 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedJson/OwnedJsonPrimitiveCollectionSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedJson/OwnedJsonPrimitiveCollectionSqlServerTest.cs @@ -119,11 +119,11 @@ public override async Task Select_Sum() AssertSql( """ SELECT ( - SELECT COALESCE(SUM([i0].[value]), 0) + SELECT ISNULL(SUM([i0].[value]), 0) FROM OPENJSON(JSON_QUERY([r].[RequiredAssociate], '$.Ints')) WITH ([value] int '$') AS [i0]) FROM [RootEntity] AS [r] WHERE ( - SELECT COALESCE(SUM([i].[value]), 0) + SELECT ISNULL(SUM([i].[value]), 0) FROM OPENJSON(JSON_QUERY([r].[RequiredAssociate], '$.Ints')) WITH ([value] int '$') AS [i]) >= 6 """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedNavigations/OwnedNavigationsCollectionSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedNavigations/OwnedNavigationsCollectionSqlServerTest.cs index d5f05184b79..705f58eb7ce 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedNavigations/OwnedNavigationsCollectionSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedNavigations/OwnedNavigationsCollectionSqlServerTest.cs @@ -245,7 +245,7 @@ FROM [RelatedCollection] AS [r4] LEFT JOIN [OptionalRelated_NestedCollection] AS [o2] ON [o].[RootEntityId] = [o2].[AssociateTypeRootEntityId] LEFT JOIN [RequiredRelated_NestedCollection] AS [r8] ON [r1].[RootEntityId] = [r8].[AssociateTypeRootEntityId] WHERE 16 IN ( - SELECT COALESCE(SUM([r0].[Int]), 0) + SELECT ISNULL(SUM([r0].[Int]), 0) FROM [RelatedCollection] AS [r0] WHERE [r].[Id] = [r0].[RootEntityId] GROUP BY [r0].[String] @@ -263,7 +263,7 @@ public override async Task Select_within_Select_within_Select_with_aggregates() AssertSql( """ SELECT ( - SELECT COALESCE(SUM([s].[value]), 0) + SELECT ISNULL(SUM([s].[value]), 0) FROM [RelatedCollection] AS [r0] OUTER APPLY ( SELECT MAX([r1].[Int]) AS [value] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedNavigations/OwnedNavigationsPrimitiveCollectionSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedNavigations/OwnedNavigationsPrimitiveCollectionSqlServerTest.cs index 43539ee13d0..940b189ccbb 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedNavigations/OwnedNavigationsPrimitiveCollectionSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedNavigations/OwnedNavigationsPrimitiveCollectionSqlServerTest.cs @@ -163,12 +163,12 @@ public override async Task Select_Sum() AssertSql( """ SELECT ( - SELECT COALESCE(SUM([i0].[value]), 0) + SELECT ISNULL(SUM([i0].[value]), 0) FROM OPENJSON([r0].[Ints]) WITH ([value] int '$') AS [i0]) FROM [RootEntity] AS [r] LEFT JOIN [RequiredRelated] AS [r0] ON [r].[Id] = [r0].[RootEntityId] WHERE ( - SELECT COALESCE(SUM([i].[value]), 0) + SELECT ISNULL(SUM([i].[value]), 0) FROM OPENJSON([r0].[Ints]) WITH ([value] int '$') AS [i]) >= 6 """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedNavigations/OwnedNavigationsSetOperationsSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedNavigations/OwnedNavigationsSetOperationsSqlServerTest.cs index c62116f36a0..cce75da87a4 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedNavigations/OwnedNavigationsSetOperationsSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedNavigations/OwnedNavigationsSetOperationsSqlServerTest.cs @@ -56,7 +56,7 @@ public override async Task Over_assocate_collection_Select_nested_with_aggregate AssertSql( """ SELECT ( - SELECT COALESCE(SUM([s].[value]), 0) + SELECT ISNULL(SUM([s].[value]), 0) FROM ( SELECT [r0].[RootEntityId], [r0].[Id] FROM [RelatedCollection] AS [r0] @@ -67,7 +67,7 @@ FROM [RelatedCollection] AS [r1] WHERE [r].[Id] = [r1].[RootEntityId] AND [r1].[String] = N'foo' ) AS [u] OUTER APPLY ( - SELECT COALESCE(SUM([r2].[Int]), 0) AS [value] + SELECT ISNULL(SUM([r2].[Int]), 0) AS [value] FROM [RelatedCollection_NestedCollection] AS [r2] WHERE [u].[RootEntityId] = [r2].[AssociateTypeRootEntityId] AND [u].[Id] = [r2].[AssociateTypeId] ) AS [s]) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedTableSplitting/OwnedTableSplittingPrimitiveCollectionSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedTableSplitting/OwnedTableSplittingPrimitiveCollectionSqlServerTest.cs index 9c1334c20c7..d6f52bae25d 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedTableSplitting/OwnedTableSplittingPrimitiveCollectionSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Associations/OwnedTableSplitting/OwnedTableSplittingPrimitiveCollectionSqlServerTest.cs @@ -135,11 +135,11 @@ public override async Task Select_Sum() AssertSql( """ SELECT ( - SELECT COALESCE(SUM([r1].[value]), 0) + SELECT ISNULL(SUM([r1].[value]), 0) FROM OPENJSON([r].[RequiredAssociate_Ints]) WITH ([value] int '$') AS [r1]) FROM [RootEntity] AS [r] WHERE ( - SELECT COALESCE(SUM([r0].[value]), 0) + SELECT ISNULL(SUM([r0].[value]), 0) FROM OPENJSON([r].[RequiredAssociate_Ints]) WITH ([value] int '$') AS [r0]) >= 6 """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsQuerySqlServerTest.cs index a0309c8b272..dfe58c4c12e 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsQuerySqlServerTest.cs @@ -1092,7 +1092,7 @@ public override async Task Result_operator_nav_prop_reference_optional_Sum(bool AssertSql( """ -SELECT COALESCE(SUM([l0].[Level1_Required_Id]), 0) +SELECT ISNULL(SUM([l0].[Level1_Required_Id]), 0) FROM [LevelOne] AS [l] LEFT JOIN [LevelTwo] AS [l0] ON [l].[Id] = [l0].[Level1_Optional_Id] """); @@ -1164,7 +1164,7 @@ public override async Task Result_operator_nav_prop_reference_optional_via_Defau AssertSql( """ -SELECT COALESCE(SUM(CASE +SELECT ISNULL(SUM(CASE WHEN [l0].[Id] IS NULL THEN 0 ELSE [l0].[Level1_Required_Id] END), 0) @@ -2024,7 +2024,7 @@ public override async Task Select_join_with_key_selector_being_a_subquery(bool a """ SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id], [l0].[Id], [l0].[Date], [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_Inverse2Id], [l0].[OneToMany_Optional_Self_Inverse2Id], [l0].[OneToMany_Required_Inverse2Id], [l0].[OneToMany_Required_Self_Inverse2Id], [l0].[OneToOne_Optional_PK_Inverse2Id], [l0].[OneToOne_Optional_Self2Id] FROM [LevelOne] AS [l] -INNER JOIN [LevelTwo] AS [l0] ON [l].[Id] = COALESCE(( +INNER JOIN [LevelTwo] AS [l0] ON [l].[Id] = ISNULL(( SELECT TOP(1) [l1].[Id] FROM [LevelTwo] AS [l1] ORDER BY [l1].[Id]), 0) @@ -2921,7 +2921,7 @@ public override async Task Select_optional_navigation_property_string_concat(boo AssertSql( """ -SELECT COALESCE([l].[Name], N'') + N' ' + COALESCE(CASE +SELECT ISNULL([l].[Name], N'') + N' ' + ISNULL(CASE WHEN [l1].[Id] IS NOT NULL THEN [l1].[Name] ELSE N'NULL' END, N'') @@ -3795,7 +3795,7 @@ public override async Task Sum_with_selector_cast_using_as(bool async) AssertSql( """ -SELECT COALESCE(SUM([l].[Id]), 0) +SELECT ISNULL(SUM([l].[Id]), 0) FROM [LevelOne] AS [l] """); } @@ -3809,7 +3809,7 @@ public override async Task Sum_with_filter_with_include_selector_cast_using_as(b SELECT [l].[Id], [l].[Date], [l].[Name], [l].[OneToMany_Optional_Self_Inverse1Id], [l].[OneToMany_Required_Self_Inverse1Id], [l].[OneToOne_Optional_Self1Id] FROM [LevelOne] AS [l] WHERE [l].[Id] > ( - SELECT COALESCE(SUM([l0].[Id]), 0) + SELECT ISNULL(SUM([l0].[Id]), 0) FROM [LevelTwo] AS [l0] WHERE [l].[Id] = [l0].[OneToMany_Optional_Inverse2Id]) """); @@ -3963,7 +3963,7 @@ FROM [LevelOne] AS [l] LEFT JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[Id] GROUP BY [l1].[Name] HAVING ( - SELECT MIN(COALESCE([l5].[Id], 0) + COALESCE([l5].[Id], 0)) + SELECT MIN(ISNULL([l5].[Id], 0) + ISNULL([l5].[Id], 0)) FROM [LevelOne] AS [l2] LEFT JOIN [LevelTwo] AS [l3] ON [l2].[Id] = [l3].[Id] LEFT JOIN [LevelThree] AS [l4] ON [l3].[Id] = [l4].[Id] @@ -4104,7 +4104,7 @@ public override async Task Composite_key_join_on_groupby_aggregate_projecting_on SELECT [l2].[Key] FROM [LevelOne] AS [l] INNER JOIN ( - SELECT [l1].[Key], COALESCE(SUM([l1].[Id]), 0) AS [Sum] + SELECT [l1].[Key], ISNULL(SUM([l1].[Id]), 0) AS [Sum] FROM ( SELECT [l0].[Id], [l0].[Id] % 3 AS [Key] FROM [LevelTwo] AS [l0] @@ -4123,7 +4123,7 @@ public override async Task Composite_key_join_on_groupby_aggregate_projecting_on SELECT [l2].[Key] FROM [LevelOne] AS [l] INNER JOIN ( - SELECT [l1].[Key], COALESCE(SUM([l1].[Id]), 0) AS [Sum] + SELECT [l1].[Key], ISNULL(SUM([l1].[Id]), 0) AS [Sum] FROM ( SELECT [l0].[Id], [l0].[Id] % 3 AS [Key] FROM [LevelTwo] AS [l0] @@ -4339,7 +4339,7 @@ WHERE [l].[Id] < 5 CROSS APPLY ( SELECT [l1].[Id], [l1].[Date], [l1].[Name], [l1].[OneToMany_Optional_Self_Inverse1Id], [l1].[OneToMany_Required_Self_Inverse1Id], [l1].[OneToOne_Optional_Self1Id] FROM [LevelOne] AS [l1] - WHERE [l1].[Id] <> COALESCE([l0].[Level1_Required_Id], 0) + WHERE [l1].[Id] <> ISNULL([l0].[Level1_Required_Id], 0) ) AS [l2] """); } @@ -4447,7 +4447,7 @@ FROM [LevelOne] AS [l] LEFT JOIN [LevelThree] AS [l1] ON [l0].[Id] = [l1].[Id] GROUP BY [l1].[Name] HAVING ( - SELECT MIN(COALESCE([l5].[Id], 0)) + SELECT MIN(ISNULL([l5].[Id], 0)) FROM [LevelOne] AS [l2] LEFT JOIN [LevelTwo] AS [l3] ON [l2].[Id] = [l3].[Id] LEFT JOIN [LevelThree] AS [l4] ON [l3].[Id] = [l4].[Id] @@ -4829,7 +4829,7 @@ ORDER BY [l].[Id] ) AS [l4] LEFT JOIN ( SELECT [l0].[Id], [l1].[Id] AS [Id0], [l2].[Id] AS [Id1], CASE - WHEN COALESCE(( + WHEN ISNULL(( SELECT MAX([l3].[Id]) FROM [LevelFour] AS [l3] WHERE [l1].[Id] IS NOT NULL AND [l1].[Id] = [l3].[OneToMany_Optional_Inverse4Id]), 0) > 1 THEN CAST(1 AS bit) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsSharedTypeQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsSharedTypeQuerySqlServerTest.cs index 83b644d5e13..264317760ff 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsSharedTypeQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/ComplexNavigationsSharedTypeQuerySqlServerTest.cs @@ -217,7 +217,7 @@ WHEN [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3 END GROUP BY [l3].[Level3_Name] HAVING ( - SELECT MIN(COALESCE(CASE + SELECT MIN(ISNULL(CASE WHEN [l10].[OneToOne_Required_PK_Date] IS NOT NULL AND [l10].[Level1_Required_Id] IS NOT NULL AND [l10].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l10].[Id] END, 0)) FROM [Level1] AS [l4] @@ -361,7 +361,7 @@ public override async Task Result_operator_nav_prop_reference_optional_via_Defau AssertSql( """ -SELECT COALESCE(SUM(CASE +SELECT ISNULL(SUM(CASE WHEN [s].[OneToOne_Required_PK_Date] IS NULL OR [s].[Level1_Required_Id] IS NULL OR [s].[OneToMany_Required_Inverse2Id] IS NULL THEN 0 ELSE [s].[Level1_Required_Id] END), 0) @@ -540,9 +540,9 @@ WHEN [l3].[Level2_Required_Id] IS NOT NULL AND [l3].[OneToMany_Required_Inverse3 END GROUP BY [l3].[Level3_Name] HAVING ( - SELECT MIN(COALESCE(CASE + SELECT MIN(ISNULL(CASE WHEN [l10].[OneToOne_Required_PK_Date] IS NOT NULL AND [l10].[Level1_Required_Id] IS NOT NULL AND [l10].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l10].[Id] - END, 0) + COALESCE(CASE + END, 0) + ISNULL(CASE WHEN [l10].[OneToOne_Required_PK_Date] IS NOT NULL AND [l10].[Level1_Required_Id] IS NOT NULL AND [l10].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l10].[Id] END, 0)) FROM [Level1] AS [l4] @@ -579,7 +579,7 @@ public override async Task Sum_with_selector_cast_using_as(bool async) AssertSql( """ -SELECT COALESCE(SUM([l].[Id]), 0) +SELECT ISNULL(SUM([l].[Id]), 0) FROM [Level1] AS [l] """); } @@ -593,7 +593,7 @@ public override async Task Sum_with_filter_with_include_selector_cast_using_as(b SELECT [l].[Id], [l].[Date], [l].[Name] FROM [Level1] AS [l] WHERE [l].[Id] > ( - SELECT COALESCE(SUM(CASE + SELECT ISNULL(SUM(CASE WHEN [l0].[OneToOne_Required_PK_Date] IS NOT NULL AND [l0].[Level1_Required_Id] IS NOT NULL AND [l0].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l0].[Id] END), 0) FROM [Level1] AS [l0] @@ -880,7 +880,7 @@ SELECT [s1].[Key] FROM [Level1] AS [l] INNER JOIN ( SELECT [s].[Key], ( - SELECT COALESCE(SUM(CASE + SELECT ISNULL(SUM(CASE WHEN [l7].[OneToOne_Required_PK_Date] IS NOT NULL AND [l7].[Level1_Required_Id] IS NOT NULL AND [l7].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l7].[Id] END), 0) FROM ( @@ -934,7 +934,7 @@ SELECT [s1].[Key] FROM [Level1] AS [l] INNER JOIN ( SELECT [s].[Key], ( - SELECT COALESCE(SUM(CASE + SELECT ISNULL(SUM(CASE WHEN [l7].[OneToOne_Required_PK_Date] IS NOT NULL AND [l7].[Level1_Required_Id] IS NOT NULL AND [l7].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l7].[Id] END), 0) FROM ( @@ -1621,7 +1621,7 @@ WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] CROSS APPLY ( SELECT [l2].[Id], [l2].[Date], [l2].[Name] FROM [Level1] AS [l2] - WHERE [l2].[Id] <> COALESCE([s].[Level1_Required_Id], 0) + WHERE [l2].[Id] <> ISNULL([s].[Level1_Required_Id], 0) ) AS [l3] """); } @@ -1907,7 +1907,7 @@ WHERE [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] WHEN [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l2].[Id] END WHERE [l2].[OneToOne_Required_PK_Date] IS NOT NULL AND [l2].[Level1_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse2Id] IS NOT NULL -) AS [s] ON [l].[Id] = COALESCE(( +) AS [s] ON [l].[Id] = ISNULL(( SELECT TOP(1) CASE WHEN [l5].[OneToOne_Required_PK_Date] IS NOT NULL AND [l5].[Level1_Required_Id] IS NOT NULL AND [l5].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l5].[Id] END @@ -3650,7 +3650,7 @@ public override async Task Result_operator_nav_prop_reference_optional_Sum(bool AssertSql( """ -SELECT COALESCE(SUM([l1].[Level1_Required_Id]), 0) +SELECT ISNULL(SUM([l1].[Level1_Required_Id]), 0) FROM [Level1] AS [l] LEFT JOIN ( SELECT [l0].[Level1_Optional_Id], [l0].[Level1_Required_Id] @@ -5889,7 +5889,7 @@ public override async Task Select_optional_navigation_property_string_concat(boo AssertSql( """ -SELECT COALESCE([l].[Name], N'') + N' ' + COALESCE(CASE +SELECT ISNULL([l].[Name], N'') + N' ' + ISNULL(CASE WHEN [l1].[OneToOne_Required_PK_Date] IS NOT NULL AND [l1].[Level1_Required_Id] IS NOT NULL AND [l1].[OneToMany_Required_Inverse2Id] IS NOT NULL THEN [l1].[Level2_Name] ELSE N'NULL' END, N'') @@ -8395,7 +8395,7 @@ WHEN [l2].[Level2_Required_Id] IS NOT NULL AND [l2].[OneToMany_Required_Inverse3 END AS [Id0], CASE WHEN [l4].[Level3_Required_Id] IS NOT NULL AND [l4].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [l4].[Id] END AS [Id1], CASE - WHEN COALESCE(( + WHEN ISNULL(( SELECT MAX(CASE WHEN [l5].[Level3_Required_Id] IS NOT NULL AND [l5].[OneToMany_Required_Inverse4Id] IS NOT NULL THEN [l5].[Id] END) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Ef6GroupBySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Ef6GroupBySqlServerTest.cs index d4ae72ec9a6..76eb64e182b 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Ef6GroupBySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Ef6GroupBySqlServerTest.cs @@ -413,7 +413,7 @@ public override async Task Grouping_by_all_columns_with_aggregate_function_works AssertSql( """ -SELECT [a].[Id], COALESCE(SUM([a].[Id]), 0) AS [Sum], COUNT(*) AS [Count] +SELECT [a].[Id], ISNULL(SUM([a].[Id]), 0) AS [Sum], COUNT(*) AS [Count] FROM [ArubaOwner] AS [a] GROUP BY [a].[Id], [a].[Alias], [a].[FirstName], [a].[LastName] """); @@ -722,7 +722,7 @@ ORDER BY [p].[FirstName] LEFT JOIN ( SELECT [p2].[FirstName], [p2].[FullName], [p2].[c] FROM ( - SELECT [p0].[FirstName], COALESCE([p0].[FirstName], N'') + N' ' + COALESCE([p0].[MiddleInitial], N'') + N' ' + COALESCE([p0].[LastName], N'') AS [FullName], 1 AS [c], ROW_NUMBER() OVER(PARTITION BY [p0].[FirstName] ORDER BY [p0].[Id]) AS [row] + SELECT [p0].[FirstName], ISNULL([p0].[FirstName], N'') + N' ' + ISNULL([p0].[MiddleInitial], N'') + N' ' + ISNULL([p0].[LastName], N'') AS [FullName], 1 AS [c], ROW_NUMBER() OVER(PARTITION BY [p0].[FirstName] ORDER BY [p0].[Id]) AS [row] FROM [Person] AS [p0] ) AS [p2] WHERE [p2].[row] <= 1 @@ -785,7 +785,7 @@ public override async Task Sum_Grouped_from_LINQ_101(bool async) AssertSql( """ -SELECT [p].[Category], COALESCE(SUM([p].[UnitsInStock]), 0) AS [TotalUnitsInStock] +SELECT [p].[Category], ISNULL(SUM([p].[UnitsInStock]), 0) AS [TotalUnitsInStock] FROM [ProductForLinq] AS [p] GROUP BY [p].[Category] """); @@ -810,7 +810,7 @@ public override async Task Whats_new_2021_sample_9(bool async) AssertSql( """ SELECT [p].[FirstName] AS [Feet], ( - SELECT COALESCE(SUM([f].[Size]), 0) + SELECT ISNULL(SUM([f].[Size]), 0) FROM [Person] AS [p0] LEFT JOIN [Feet] AS [f] ON [p0].[Id] = [f].[Id] WHERE [p].[FirstName] = [p0].[FirstName] OR ([p].[FirstName] IS NULL AND [p0].[FirstName] IS NULL)) AS [Total] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs index d176266fae1..7bbf3f1b085 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs @@ -1142,7 +1142,7 @@ public override async Task Optional_Navigation_Null_Coalesce_To_Clr_Type(bool as AssertSql( """ -SELECT TOP(1) COALESCE([w0].[IsAutomatic], CAST(0 AS bit)) AS [IsAutomatic] +SELECT TOP(1) ISNULL([w0].[IsAutomatic], CAST(0 AS bit)) AS [IsAutomatic] FROM [Weapons] AS [w] LEFT JOIN [Weapons] AS [w0] ON [w].[SynergyWithId] = [w0].[Id] ORDER BY [w].[Id] @@ -1157,7 +1157,7 @@ public override async Task Where_subquery_boolean(bool async) """ SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank] FROM [Gears] AS [g] -WHERE COALESCE(( +WHERE ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -1189,7 +1189,7 @@ public override async Task Where_subquery_distinct_firstordefault_boolean(bool a """ SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank] FROM [Gears] AS [g] -WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -1247,7 +1247,7 @@ public override async Task Where_subquery_distinct_singleordefault_boolean1(bool """ SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank] FROM [Gears] AS [g] -WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -1266,7 +1266,7 @@ public override async Task Where_subquery_distinct_singleordefault_boolean2(bool """ SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank] FROM [Gears] AS [g] -WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[Name] LIKE N'%Lancer%'), CAST(0 AS bit)) = CAST(1 AS bit) @@ -1341,7 +1341,7 @@ public override async Task Where_subquery_distinct_orderby_firstordefault_boolea """ SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank] FROM [Gears] AS [g] -WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -1957,7 +1957,7 @@ public override async Task Coalesce_operator_in_predicate(bool async) SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[IssueDate], [t].[Note] FROM [Tags] AS [t] LEFT JOIN [Gears] AS [g] ON [t].[GearNickName] = [g].[Nickname] AND [t].[GearSquadId] = [g].[SquadId] -WHERE COALESCE([g].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) +WHERE ISNULL([g].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) """); } @@ -1970,7 +1970,7 @@ public override async Task Coalesce_operator_in_predicate_with_other_conditions( SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[IssueDate], [t].[Note] FROM [Tags] AS [t] LEFT JOIN [Gears] AS [g] ON [t].[GearNickName] = [g].[Nickname] AND [t].[GearSquadId] = [g].[SquadId] -WHERE ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND COALESCE([g].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) +WHERE ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND ISNULL([g].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) """); } @@ -1981,7 +1981,7 @@ public override async Task Coalesce_operator_in_projection_with_other_conditions AssertSql( """ SELECT CASE - WHEN ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND COALESCE([g].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) THEN CAST(1 AS bit) + WHEN ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND ISNULL([g].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END FROM [Tags] AS [t] @@ -2472,7 +2472,7 @@ public override async Task Sum_with_optional_navigation_is_translated_to_sql(boo AssertSql( """ -SELECT COALESCE(SUM([g].[SquadId]), 0) +SELECT ISNULL(SUM([g].[SquadId]), 0) FROM [Gears] AS [g] LEFT JOIN [Tags] AS [t] ON [g].[Nickname] = [t].[GearNickName] AND [g].[SquadId] = [t].[GearSquadId] WHERE [t].[Note] <> N'Foo' OR [t].[Note] IS NULL @@ -4645,7 +4645,7 @@ public override async Task Negated_bool_ternary_inside_anonymous_type_in_project """ SELECT ~CASE WHEN [g].[HasSoulPatch] = CAST(1 AS bit) THEN CAST(1 AS bit) - ELSE COALESCE([g].[HasSoulPatch], CAST(1 AS bit)) + ELSE ISNULL([g].[HasSoulPatch], CAST(1 AS bit)) END AS [c] FROM [Tags] AS [t] LEFT JOIN [Gears] AS [g] ON [t].[GearNickName] = [g].[Nickname] AND [t].[GearSquadId] = [g].[SquadId] @@ -4854,7 +4854,7 @@ public override async Task Project_one_value_type_from_empty_collection(bool asy AssertSql( """ -SELECT [s].[Name], COALESCE(( +SELECT [s].[Name], ISNULL(( SELECT TOP(1) [g].[SquadId] FROM [Gears] AS [g] WHERE [s].[Id] = [g].[SquadId] AND [g].[HasSoulPatch] = CAST(1 AS bit)), 0) AS [SquadId] @@ -4907,7 +4907,7 @@ public override async Task Filter_on_subquery_projecting_one_value_type_from_emp """ SELECT [s].[Name] FROM [Squads] AS [s] -WHERE [s].[Name] = N'Kilo' AND COALESCE(( +WHERE [s].[Name] = N'Kilo' AND ISNULL(( SELECT TOP(1) [g].[SquadId] FROM [Gears] AS [g] WHERE [s].[Id] = [g].[SquadId] AND [g].[HasSoulPatch] = CAST(1 AS bit)), 0) <> 0 @@ -5107,7 +5107,7 @@ public override async Task Include_collection_with_complex_OrderBy3(bool async) FROM [Gears] AS [g] LEFT JOIN [Gears] AS [g0] ON [g].[Nickname] = [g0].[LeaderNickname] AND [g].[SquadId] = [g0].[LeaderSquadId] WHERE [g].[Discriminator] = N'Officer' -ORDER BY COALESCE(( +ORDER BY ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -5153,7 +5153,7 @@ FROM [Gears] AS [g1] ORDER BY ( SELECT COUNT(*) FROM [Weapons] AS [w] - WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[IsAutomatic] = COALESCE(( + WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[IsAutomatic] = ISNULL(( SELECT TOP(1) [g0].[HasSoulPatch] FROM [Gears] AS [g0] WHERE [g0].[Nickname] = N'Marcus'), CAST(0 AS bit))), [g].[Nickname], [g].[SquadId], [g2].[Nickname] @@ -5178,7 +5178,7 @@ public override async Task Select_subquery_boolean(bool async) AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -5208,7 +5208,7 @@ public override async Task Select_subquery_int_with_inside_cast_and_coalesce(boo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -5223,7 +5223,7 @@ public override async Task Select_subquery_int_with_outside_cast_and_coalesce(bo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -5238,7 +5238,7 @@ public override async Task Select_subquery_int_with_pushdown_and_coalesce(bool a AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -5253,7 +5253,7 @@ public override async Task Select_subquery_int_with_pushdown_and_coalesce2(bool AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -5272,7 +5272,7 @@ public override async Task Select_subquery_boolean_empty(bool async) AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[Name] = N'BFG' @@ -5302,7 +5302,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean1(boo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -5320,7 +5320,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean2(boo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[Name] LIKE N'%Lancer%'), CAST(0 AS bit)) @@ -5353,7 +5353,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean_empt AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -5371,7 +5371,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean_empt AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[Name] = N'BFG'), CAST(0 AS bit)) @@ -5552,7 +5552,7 @@ public override async Task String_concat_with_null_conditional_argument(bool asy SELECT [w0].[Id], [w0].[AmmunitionType], [w0].[IsAutomatic], [w0].[Name], [w0].[OwnerFullName], [w0].[SynergyWithId] FROM [Weapons] AS [w] LEFT JOIN [Weapons] AS [w0] ON [w].[SynergyWithId] = [w0].[Id] -ORDER BY COALESCE([w0].[Name], N'') + CAST(5 AS nvarchar(max)) +ORDER BY ISNULL([w0].[Name], N'') + CAST(5 AS nvarchar(max)) """); } @@ -5565,7 +5565,7 @@ public override async Task String_concat_with_null_conditional_argument2(bool as SELECT [w0].[Id], [w0].[AmmunitionType], [w0].[IsAutomatic], [w0].[Name], [w0].[OwnerFullName], [w0].[SynergyWithId] FROM [Weapons] AS [w] LEFT JOIN [Weapons] AS [w0] ON [w].[SynergyWithId] = [w0].[Id] -ORDER BY COALESCE([w0].[Name], N'') + N'Marcus'' Lancer' +ORDER BY ISNULL([w0].[Name], N'') + N'Marcus'' Lancer' """); } @@ -5600,7 +5600,7 @@ public override async Task GroupBy_Property_Include_Select_Sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([g].[SquadId]), 0) +SELECT ISNULL(SUM([g].[SquadId]), 0) FROM [Gears] AS [g] GROUP BY [g].[Rank] """); @@ -5797,7 +5797,7 @@ public override async Task GetValueOrDefault_in_projection(bool async) AssertSql( """ -SELECT COALESCE([w].[SynergyWithId], 0) +SELECT ISNULL([w].[SynergyWithId], 0) FROM [Weapons] AS [w] """); } @@ -5810,7 +5810,7 @@ public override async Task GetValueOrDefault_in_filter(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] -WHERE COALESCE([w].[SynergyWithId], 0) = 0 +WHERE ISNULL([w].[SynergyWithId], 0) = 0 """); } @@ -5834,7 +5834,7 @@ public override async Task GetValueOrDefault_in_order_by(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] -ORDER BY COALESCE([w].[SynergyWithId], 0), [w].[Id] +ORDER BY ISNULL([w].[SynergyWithId], 0), [w].[Id] """); } @@ -5846,7 +5846,7 @@ public override async Task GetValueOrDefault_with_argument(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] -WHERE COALESCE([w].[SynergyWithId], [w].[Id]) = 1 +WHERE ISNULL([w].[SynergyWithId], [w].[Id]) = 1 """); } @@ -5858,7 +5858,7 @@ public override async Task GetValueOrDefault_with_argument_complex(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] -WHERE COALESCE([w].[SynergyWithId], CAST(LEN([w].[Name]) AS int) + 42) > 10 +WHERE ISNULL([w].[SynergyWithId], CAST(LEN([w].[Name]) AS int) + 42) > 10 """); } @@ -6324,7 +6324,7 @@ public override async Task DefaultIfEmpty_top_level_over_arbitrary_expression_wi AssertSql( """ -SELECT COALESCE([m0].[c], 0) +SELECT ISNULL([m0].[c], 0) FROM ( SELECT 1 AS empty ) AS [e] @@ -7631,7 +7631,7 @@ public override async Task FirstOrDefault_over_int_compared_to_zero(bool async) """ SELECT [s].[Name] FROM [Squads] AS [s] -WHERE [s].[Name] = N'Delta' AND COALESCE(( +WHERE [s].[Name] = N'Delta' AND ISNULL(( SELECT TOP(1) [g].[SquadId] FROM [Gears] AS [g] WHERE [s].[Id] = [g].[SquadId] AND [g].[HasSoulPatch] = CAST(1 AS bit) @@ -7715,14 +7715,14 @@ public override async Task FirstOrDefault_on_empty_collection_of_DateTime_in_sub AssertSql( """ -SELECT [g].[Nickname], COALESCE(( +SELECT [g].[Nickname], ISNULL(( SELECT TOP(1) [t1].[IssueDate] FROM [Tags] AS [t1] WHERE [t1].[GearNickName] = [g].[FullName] ORDER BY [t1].[Id]), '0001-01-01T00:00:00.0000000') AS [invalidTagIssueDate] FROM [Gears] AS [g] LEFT JOIN [Tags] AS [t] ON [g].[Nickname] = [t].[GearNickName] AND [g].[SquadId] = [t].[GearSquadId] -WHERE [t].[IssueDate] > COALESCE(( +WHERE [t].[IssueDate] > ISNULL(( SELECT TOP(1) [t0].[IssueDate] FROM [Tags] AS [t0] WHERE [t0].[GearNickName] = [g].[FullName] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPCGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPCGearsOfWarQuerySqlServerTest.cs index b5c826cd562..3a3c4ee4ed1 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPCGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPCGearsOfWarQuerySqlServerTest.cs @@ -1578,7 +1578,7 @@ public override async Task Optional_Navigation_Null_Coalesce_To_Clr_Type(bool as AssertSql( """ -SELECT TOP(1) COALESCE([w0].[IsAutomatic], CAST(0 AS bit)) AS [IsAutomatic] +SELECT TOP(1) ISNULL([w0].[IsAutomatic], CAST(0 AS bit)) AS [IsAutomatic] FROM [Weapons] AS [w] LEFT JOIN [Weapons] AS [w0] ON [w].[SynergyWithId] = [w0].[Id] ORDER BY [w].[Id] @@ -1599,7 +1599,7 @@ UNION ALL SELECT [o].[Nickname], [o].[SquadId], [o].[AssignedCityName], [o].[CityOfBirthName], [o].[FullName], [o].[HasSoulPatch], [o].[LeaderNickname], [o].[LeaderSquadId], [o].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o] ) AS [u] -WHERE COALESCE(( +WHERE ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [u].[FullName] = [w].[OwnerFullName] @@ -1643,7 +1643,7 @@ UNION ALL SELECT [o].[Nickname], [o].[SquadId], [o].[AssignedCityName], [o].[CityOfBirthName], [o].[FullName], [o].[HasSoulPatch], [o].[LeaderNickname], [o].[LeaderSquadId], [o].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o] ) AS [u] -WHERE [u].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [u].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -1719,7 +1719,7 @@ UNION ALL SELECT [o].[Nickname], [o].[SquadId], [o].[AssignedCityName], [o].[CityOfBirthName], [o].[FullName], [o].[HasSoulPatch], [o].[LeaderNickname], [o].[LeaderSquadId], [o].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o] ) AS [u] -WHERE [u].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [u].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -1744,7 +1744,7 @@ UNION ALL SELECT [o].[Nickname], [o].[SquadId], [o].[AssignedCityName], [o].[CityOfBirthName], [o].[FullName], [o].[HasSoulPatch], [o].[LeaderNickname], [o].[LeaderSquadId], [o].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o] ) AS [u] -WHERE [u].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [u].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [u].[FullName] = [w].[OwnerFullName] AND [w].[Name] LIKE N'%Lancer%'), CAST(0 AS bit)) = CAST(1 AS bit) @@ -1843,7 +1843,7 @@ UNION ALL SELECT [o].[Nickname], [o].[SquadId], [o].[AssignedCityName], [o].[CityOfBirthName], [o].[FullName], [o].[HasSoulPatch], [o].[LeaderNickname], [o].[LeaderSquadId], [o].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o] ) AS [u] -WHERE [u].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [u].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -2695,7 +2695,7 @@ UNION ALL SELECT [o].[Nickname], [o].[SquadId], [o].[HasSoulPatch] FROM [Officers] AS [o] ) AS [u] ON [t].[GearNickName] = [u].[Nickname] AND [t].[GearSquadId] = [u].[SquadId] -WHERE COALESCE([u].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) +WHERE ISNULL([u].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) """); } @@ -2714,7 +2714,7 @@ UNION ALL SELECT [o].[Nickname], [o].[SquadId], [o].[HasSoulPatch] FROM [Officers] AS [o] ) AS [u] ON [t].[GearNickName] = [u].[Nickname] AND [t].[GearSquadId] = [u].[SquadId] -WHERE ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND COALESCE([u].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) +WHERE ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND ISNULL([u].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) """); } @@ -2725,7 +2725,7 @@ public override async Task Coalesce_operator_in_projection_with_other_conditions AssertSql( """ SELECT CASE - WHEN ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND COALESCE([u].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) THEN CAST(1 AS bit) + WHEN ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND ISNULL([u].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END FROM [Tags] AS [t] @@ -3323,7 +3323,7 @@ public override async Task Sum_with_optional_navigation_is_translated_to_sql(boo AssertSql( """ -SELECT COALESCE(SUM([u].[SquadId]), 0) +SELECT ISNULL(SUM([u].[SquadId]), 0) FROM ( SELECT [g].[Nickname], [g].[SquadId] FROM [Gears] AS [g] @@ -6324,7 +6324,7 @@ public override async Task Negated_bool_ternary_inside_anonymous_type_in_project """ SELECT ~CASE WHEN [u].[HasSoulPatch] = CAST(1 AS bit) THEN CAST(1 AS bit) - ELSE COALESCE([u].[HasSoulPatch], CAST(1 AS bit)) + ELSE ISNULL([u].[HasSoulPatch], CAST(1 AS bit)) END AS [c] FROM [Tags] AS [t] LEFT JOIN ( @@ -6612,7 +6612,7 @@ public override async Task Project_one_value_type_from_empty_collection(bool asy AssertSql( """ -SELECT [s].[Name], COALESCE(( +SELECT [s].[Name], ISNULL(( SELECT TOP(1) [u].[SquadId] FROM ( SELECT [g].[SquadId], [g].[HasSoulPatch] @@ -6683,7 +6683,7 @@ public override async Task Filter_on_subquery_projecting_one_value_type_from_emp """ SELECT [s].[Name] FROM [Squads] AS [s] -WHERE [s].[Name] = N'Kilo' AND COALESCE(( +WHERE [s].[Name] = N'Kilo' AND ISNULL(( SELECT TOP(1) [u].[SquadId] FROM ( SELECT [g].[SquadId], [g].[HasSoulPatch] @@ -6967,7 +6967,7 @@ UNION ALL SELECT [o0].[Nickname], [o0].[SquadId], [o0].[AssignedCityName], [o0].[CityOfBirthName], [o0].[FullName], [o0].[HasSoulPatch], [o0].[LeaderNickname], [o0].[LeaderSquadId], [o0].[Rank], N'Officer' AS [Discriminator] FROM [Officers] AS [o0] ) AS [u0] ON [u].[Nickname] = [u0].[LeaderNickname] AND [u].[SquadId] = [u0].[LeaderSquadId] -ORDER BY COALESCE(( +ORDER BY ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [u].[FullName] = [w].[OwnerFullName] @@ -7029,7 +7029,7 @@ FROM [Officers] AS [o1] ORDER BY ( SELECT COUNT(*) FROM [Weapons] AS [w] - WHERE [u].[FullName] = [w].[OwnerFullName] AND [w].[IsAutomatic] = COALESCE(( + WHERE [u].[FullName] = [w].[OwnerFullName] AND [w].[IsAutomatic] = ISNULL(( SELECT TOP(1) [u0].[HasSoulPatch] FROM ( SELECT [g].[Nickname], [g].[HasSoulPatch] @@ -7059,7 +7059,7 @@ public override async Task Select_subquery_boolean(bool async) AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [u].[FullName] = [w].[OwnerFullName] @@ -7101,7 +7101,7 @@ public override async Task Select_subquery_int_with_inside_cast_and_coalesce(boo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] AS [w] WHERE [u].[FullName] = [w].[OwnerFullName] @@ -7122,7 +7122,7 @@ public override async Task Select_subquery_int_with_outside_cast_and_coalesce(bo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] AS [w] WHERE [u].[FullName] = [w].[OwnerFullName] @@ -7143,7 +7143,7 @@ public override async Task Select_subquery_int_with_pushdown_and_coalesce(bool a AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] AS [w] WHERE [u].[FullName] = [w].[OwnerFullName] @@ -7164,7 +7164,7 @@ public override async Task Select_subquery_int_with_pushdown_and_coalesce2(bool AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] AS [w] WHERE [u].[FullName] = [w].[OwnerFullName] @@ -7189,7 +7189,7 @@ public override async Task Select_subquery_boolean_empty(bool async) AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [u].[FullName] = [w].[OwnerFullName] AND [w].[Name] = N'BFG' @@ -7231,7 +7231,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean1(boo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -7255,7 +7255,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean2(boo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [u].[FullName] = [w].[OwnerFullName] AND [w].[Name] LIKE N'%Lancer%'), CAST(0 AS bit)) @@ -7300,7 +7300,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean_empt AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -7324,7 +7324,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean_empt AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [u].[FullName] = [w].[OwnerFullName] AND [w].[Name] = N'BFG'), CAST(0 AS bit)) @@ -7535,7 +7535,7 @@ public override async Task String_concat_with_null_conditional_argument(bool asy SELECT [w0].[Id], [w0].[AmmunitionType], [w0].[IsAutomatic], [w0].[Name], [w0].[OwnerFullName], [w0].[SynergyWithId] FROM [Weapons] AS [w] LEFT JOIN [Weapons] AS [w0] ON [w].[SynergyWithId] = [w0].[Id] -ORDER BY COALESCE([w0].[Name], N'') + CAST(5 AS nvarchar(max)) +ORDER BY ISNULL([w0].[Name], N'') + CAST(5 AS nvarchar(max)) """); } @@ -7548,7 +7548,7 @@ public override async Task String_concat_with_null_conditional_argument2(bool as SELECT [w0].[Id], [w0].[AmmunitionType], [w0].[IsAutomatic], [w0].[Name], [w0].[OwnerFullName], [w0].[SynergyWithId] FROM [Weapons] AS [w] LEFT JOIN [Weapons] AS [w0] ON [w].[SynergyWithId] = [w0].[Id] -ORDER BY COALESCE([w0].[Name], N'') + N'Marcus'' Lancer' +ORDER BY ISNULL([w0].[Name], N'') + N'Marcus'' Lancer' """); } @@ -7595,7 +7595,7 @@ public override async Task GroupBy_Property_Include_Select_Sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([u].[SquadId]), 0) +SELECT ISNULL(SUM([u].[SquadId]), 0) FROM ( SELECT [g].[SquadId], [g].[Rank] FROM [Gears] AS [g] @@ -7878,7 +7878,7 @@ public override async Task GetValueOrDefault_in_projection(bool async) AssertSql( """ -SELECT COALESCE([w].[SynergyWithId], 0) +SELECT ISNULL([w].[SynergyWithId], 0) FROM [Weapons] AS [w] """); } @@ -7891,7 +7891,7 @@ public override async Task GetValueOrDefault_in_filter(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] -WHERE COALESCE([w].[SynergyWithId], 0) = 0 +WHERE ISNULL([w].[SynergyWithId], 0) = 0 """); } @@ -7915,7 +7915,7 @@ public override async Task GetValueOrDefault_in_order_by(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] -ORDER BY COALESCE([w].[SynergyWithId], 0), [w].[Id] +ORDER BY ISNULL([w].[SynergyWithId], 0), [w].[Id] """); } @@ -7927,7 +7927,7 @@ public override async Task GetValueOrDefault_with_argument(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] -WHERE COALESCE([w].[SynergyWithId], [w].[Id]) = 1 +WHERE ISNULL([w].[SynergyWithId], [w].[Id]) = 1 """); } @@ -7939,7 +7939,7 @@ public override async Task GetValueOrDefault_with_argument_complex(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] -WHERE COALESCE([w].[SynergyWithId], CAST(LEN([w].[Name]) AS int) + 42) > 10 +WHERE ISNULL([w].[SynergyWithId], CAST(LEN([w].[Name]) AS int) + 42) > 10 """); } @@ -10183,7 +10183,7 @@ public override async Task FirstOrDefault_over_int_compared_to_zero(bool async) """ SELECT [s].[Name] FROM [Squads] AS [s] -WHERE [s].[Name] = N'Delta' AND COALESCE(( +WHERE [s].[Name] = N'Delta' AND ISNULL(( SELECT TOP(1) [u].[SquadId] FROM ( SELECT [g].[SquadId], [g].[FullName], [g].[HasSoulPatch] @@ -10951,7 +10951,7 @@ public override async Task DefaultIfEmpty_top_level_over_arbitrary_expression_wi AssertSql( """ -SELECT COALESCE([m0].[c], 0) +SELECT ISNULL([m0].[c], 0) FROM ( SELECT 1 AS empty ) AS [e] @@ -11142,7 +11142,7 @@ public override async Task FirstOrDefault_on_empty_collection_of_DateTime_in_sub AssertSql( """ -SELECT [u].[Nickname], COALESCE(( +SELECT [u].[Nickname], ISNULL(( SELECT TOP(1) [t1].[IssueDate] FROM [Tags] AS [t1] WHERE [t1].[GearNickName] = [u].[FullName] @@ -11155,7 +11155,7 @@ UNION ALL FROM [Officers] AS [o] ) AS [u] LEFT JOIN [Tags] AS [t] ON [u].[Nickname] = [t].[GearNickName] AND [u].[SquadId] = [t].[GearSquadId] -WHERE [t].[IssueDate] > COALESCE(( +WHERE [t].[IssueDate] > ISNULL(( SELECT TOP(1) [t0].[IssueDate] FROM [Tags] AS [t0] WHERE [t0].[GearNickName] = [u].[FullName] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPCManyToManyNoTrackingQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPCManyToManyNoTrackingQuerySqlServerTest.cs index 80729b6c23f..9f9b8eaed08 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPCManyToManyNoTrackingQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPCManyToManyNoTrackingQuerySqlServerTest.cs @@ -216,7 +216,7 @@ public override async Task Skip_navigation_select_many_sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([s].[Key1]), 0) +SELECT ISNULL(SUM([s].[Key1]), 0) FROM ( SELECT [r].[Id] FROM [Roots] AS [r] @@ -290,7 +290,7 @@ public override async Task Skip_navigation_select_subquery_sum(bool async) AssertSql( """ SELECT ( - SELECT COALESCE(SUM([e1].[Id]), 0) + SELECT ISNULL(SUM([e1].[Id]), 0) FROM [EntityOneEntityTwo] AS [e0] INNER JOIN [EntityOnes] AS [e1] ON [e0].[OneSkipSharedId] = [e1].[Id] WHERE [e].[Id] = [e0].[TwoSkipSharedId]) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPCManyToManyQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPCManyToManyQuerySqlServerTest.cs index 7121034e5be..78bc611dc0b 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPCManyToManyQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPCManyToManyQuerySqlServerTest.cs @@ -216,7 +216,7 @@ public override async Task Skip_navigation_select_many_sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([s].[Key1]), 0) +SELECT ISNULL(SUM([s].[Key1]), 0) FROM ( SELECT [r].[Id] FROM [Roots] AS [r] @@ -290,7 +290,7 @@ public override async Task Skip_navigation_select_subquery_sum(bool async) AssertSql( """ SELECT ( - SELECT COALESCE(SUM([e1].[Id]), 0) + SELECT ISNULL(SUM([e1].[Id]), 0) FROM [EntityOneEntityTwo] AS [e0] INNER JOIN [EntityOnes] AS [e1] ON [e0].[OneSkipSharedId] = [e1].[Id] WHERE [e].[Id] = [e0].[TwoSkipSharedId]) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPTGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPTGearsOfWarQuerySqlServerTest.cs index 63497512cd4..565dd038fef 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPTGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPTGearsOfWarQuerySqlServerTest.cs @@ -1365,7 +1365,7 @@ public override async Task Optional_Navigation_Null_Coalesce_To_Clr_Type(bool as AssertSql( """ -SELECT TOP(1) COALESCE([w0].[IsAutomatic], CAST(0 AS bit)) AS [IsAutomatic] +SELECT TOP(1) ISNULL([w0].[IsAutomatic], CAST(0 AS bit)) AS [IsAutomatic] FROM [Weapons] AS [w] LEFT JOIN [Weapons] AS [w0] ON [w].[SynergyWithId] = [w0].[Id] ORDER BY [w].[Id] @@ -1383,7 +1383,7 @@ WHEN [o].[Nickname] IS NOT NULL THEN N'Officer' END AS [Discriminator] FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] -WHERE COALESCE(( +WHERE ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -1421,7 +1421,7 @@ WHEN [o].[Nickname] IS NOT NULL THEN N'Officer' END AS [Discriminator] FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] -WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -1488,7 +1488,7 @@ WHEN [o].[Nickname] IS NOT NULL THEN N'Officer' END AS [Discriminator] FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] -WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -1510,7 +1510,7 @@ WHEN [o].[Nickname] IS NOT NULL THEN N'Officer' END AS [Discriminator] FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] -WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[Name] LIKE N'%Lancer%'), CAST(0 AS bit)) = CAST(1 AS bit) @@ -1597,7 +1597,7 @@ WHEN [o].[Nickname] IS NOT NULL THEN N'Officer' END AS [Discriminator] FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] -WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -2325,7 +2325,7 @@ LEFT JOIN ( SELECT [g].[Nickname], [g].[SquadId], [g].[HasSoulPatch] FROM [Gears] AS [g] ) AS [s] ON [t].[GearNickName] = [s].[Nickname] AND [t].[GearSquadId] = [s].[SquadId] -WHERE COALESCE([s].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) +WHERE ISNULL([s].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) """); } @@ -2341,7 +2341,7 @@ LEFT JOIN ( SELECT [g].[Nickname], [g].[SquadId], [g].[HasSoulPatch] FROM [Gears] AS [g] ) AS [s] ON [t].[GearNickName] = [s].[Nickname] AND [t].[GearSquadId] = [s].[SquadId] -WHERE ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND COALESCE([s].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) +WHERE ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND ISNULL([s].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) """); } @@ -2352,7 +2352,7 @@ public override async Task Coalesce_operator_in_projection_with_other_conditions AssertSql( """ SELECT CASE - WHEN ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND COALESCE([s].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) THEN CAST(1 AS bit) + WHEN ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND ISNULL([s].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END FROM [Tags] AS [t] @@ -2856,7 +2856,7 @@ public override async Task Sum_with_optional_navigation_is_translated_to_sql(boo AssertSql( """ -SELECT COALESCE(SUM([g].[SquadId]), 0) +SELECT ISNULL(SUM([g].[SquadId]), 0) FROM [Gears] AS [g] LEFT JOIN [Tags] AS [t] ON [g].[Nickname] = [t].[GearNickName] AND [g].[SquadId] = [t].[GearSquadId] WHERE [t].[Note] <> N'Foo' OR [t].[Note] IS NULL @@ -5368,7 +5368,7 @@ public override async Task Negated_bool_ternary_inside_anonymous_type_in_project """ SELECT ~CASE WHEN [s].[HasSoulPatch] = CAST(1 AS bit) THEN CAST(1 AS bit) - ELSE COALESCE([s].[HasSoulPatch], CAST(1 AS bit)) + ELSE ISNULL([s].[HasSoulPatch], CAST(1 AS bit)) END AS [c] FROM [Tags] AS [t] LEFT JOIN ( @@ -5600,7 +5600,7 @@ public override async Task Project_one_value_type_from_empty_collection(bool asy AssertSql( """ -SELECT [s].[Name], COALESCE(( +SELECT [s].[Name], ISNULL(( SELECT TOP(1) [g].[SquadId] FROM [Gears] AS [g] WHERE [s].[Id] = [g].[SquadId] AND [g].[HasSoulPatch] = CAST(1 AS bit)), 0) AS [SquadId] @@ -5653,7 +5653,7 @@ public override async Task Filter_on_subquery_projecting_one_value_type_from_emp """ SELECT [s].[Name] FROM [Squads] AS [s] -WHERE [s].[Name] = N'Kilo' AND COALESCE(( +WHERE [s].[Name] = N'Kilo' AND ISNULL(( SELECT TOP(1) [g].[SquadId] FROM [Gears] AS [g] WHERE [s].[Id] = [g].[SquadId] AND [g].[HasSoulPatch] = CAST(1 AS bit)), 0) <> 0 @@ -5886,7 +5886,7 @@ FROM [Gears] AS [g0] LEFT JOIN [Officers] AS [o0] ON [g0].[Nickname] = [o0].[Nickname] AND [g0].[SquadId] = [o0].[SquadId] ) AS [s] ON [g].[Nickname] = [s].[LeaderNickname] AND [g].[SquadId] = [s].[LeaderSquadId] WHERE [o].[Nickname] IS NOT NULL -ORDER BY COALESCE(( +ORDER BY ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -5940,7 +5940,7 @@ WHERE [o].[Nickname] IS NOT NULL ORDER BY ( SELECT COUNT(*) FROM [Weapons] AS [w] - WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[IsAutomatic] = COALESCE(( + WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[IsAutomatic] = ISNULL(( SELECT TOP(1) [g0].[HasSoulPatch] FROM [Gears] AS [g0] WHERE [g0].[Nickname] = N'Marcus'), CAST(0 AS bit))), [g].[Nickname], [g].[SquadId], [s].[Nickname] @@ -5968,7 +5968,7 @@ public override async Task Select_subquery_boolean(bool async) AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -5998,7 +5998,7 @@ public override async Task Select_subquery_int_with_inside_cast_and_coalesce(boo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -6013,7 +6013,7 @@ public override async Task Select_subquery_int_with_outside_cast_and_coalesce(bo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -6028,7 +6028,7 @@ public override async Task Select_subquery_int_with_pushdown_and_coalesce(bool a AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -6043,7 +6043,7 @@ public override async Task Select_subquery_int_with_pushdown_and_coalesce2(bool AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -6062,7 +6062,7 @@ public override async Task Select_subquery_boolean_empty(bool async) AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[Name] = N'BFG' @@ -6092,7 +6092,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean1(boo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -6110,7 +6110,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean2(boo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[Name] LIKE N'%Lancer%'), CAST(0 AS bit)) @@ -6143,7 +6143,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean_empt AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] @@ -6161,7 +6161,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean_empt AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[Name] = N'BFG'), CAST(0 AS bit)) @@ -6348,7 +6348,7 @@ public override async Task String_concat_with_null_conditional_argument(bool asy SELECT [w0].[Id], [w0].[AmmunitionType], [w0].[IsAutomatic], [w0].[Name], [w0].[OwnerFullName], [w0].[SynergyWithId] FROM [Weapons] AS [w] LEFT JOIN [Weapons] AS [w0] ON [w].[SynergyWithId] = [w0].[Id] -ORDER BY COALESCE([w0].[Name], N'') + CAST(5 AS nvarchar(max)) +ORDER BY ISNULL([w0].[Name], N'') + CAST(5 AS nvarchar(max)) """); } @@ -6361,7 +6361,7 @@ public override async Task String_concat_with_null_conditional_argument2(bool as SELECT [w0].[Id], [w0].[AmmunitionType], [w0].[IsAutomatic], [w0].[Name], [w0].[OwnerFullName], [w0].[SynergyWithId] FROM [Weapons] AS [w] LEFT JOIN [Weapons] AS [w0] ON [w].[SynergyWithId] = [w0].[Id] -ORDER BY COALESCE([w0].[Name], N'') + N'Marcus'' Lancer' +ORDER BY ISNULL([w0].[Name], N'') + N'Marcus'' Lancer' """); } @@ -6396,7 +6396,7 @@ public override async Task GroupBy_Property_Include_Select_Sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([g].[SquadId]), 0) +SELECT ISNULL(SUM([g].[SquadId]), 0) FROM [Gears] AS [g] GROUP BY [g].[Rank] """); @@ -6611,7 +6611,7 @@ public override async Task GetValueOrDefault_in_projection(bool async) AssertSql( """ -SELECT COALESCE([w].[SynergyWithId], 0) +SELECT ISNULL([w].[SynergyWithId], 0) FROM [Weapons] AS [w] """); } @@ -6624,7 +6624,7 @@ public override async Task GetValueOrDefault_in_filter(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] -WHERE COALESCE([w].[SynergyWithId], 0) = 0 +WHERE ISNULL([w].[SynergyWithId], 0) = 0 """); } @@ -6648,7 +6648,7 @@ public override async Task GetValueOrDefault_in_order_by(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] -ORDER BY COALESCE([w].[SynergyWithId], 0), [w].[Id] +ORDER BY ISNULL([w].[SynergyWithId], 0), [w].[Id] """); } @@ -6660,7 +6660,7 @@ public override async Task GetValueOrDefault_with_argument(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] -WHERE COALESCE([w].[SynergyWithId], [w].[Id]) = 1 +WHERE ISNULL([w].[SynergyWithId], [w].[Id]) = 1 """); } @@ -6672,7 +6672,7 @@ public override async Task GetValueOrDefault_with_argument_complex(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId] FROM [Weapons] AS [w] -WHERE COALESCE([w].[SynergyWithId], CAST(LEN([w].[Name]) AS int) + 42) > 10 +WHERE ISNULL([w].[SynergyWithId], CAST(LEN([w].[Name]) AS int) + 42) > 10 """); } @@ -8597,7 +8597,7 @@ public override async Task FirstOrDefault_over_int_compared_to_zero(bool async) """ SELECT [s].[Name] FROM [Squads] AS [s] -WHERE [s].[Name] = N'Delta' AND COALESCE(( +WHERE [s].[Name] = N'Delta' AND ISNULL(( SELECT TOP(1) [g].[SquadId] FROM [Gears] AS [g] WHERE [s].[Id] = [g].[SquadId] AND [g].[HasSoulPatch] = CAST(1 AS bit) @@ -9254,7 +9254,7 @@ public override async Task DefaultIfEmpty_top_level_over_arbitrary_expression_wi AssertSql( """ -SELECT COALESCE([m0].[c], 0) +SELECT ISNULL([m0].[c], 0) FROM ( SELECT 1 AS empty ) AS [e] @@ -9427,14 +9427,14 @@ public override async Task FirstOrDefault_on_empty_collection_of_DateTime_in_sub AssertSql( """ -SELECT [g].[Nickname], COALESCE(( +SELECT [g].[Nickname], ISNULL(( SELECT TOP(1) [t1].[IssueDate] FROM [Tags] AS [t1] WHERE [t1].[GearNickName] = [g].[FullName] ORDER BY [t1].[Id]), '0001-01-01T00:00:00.0000000') AS [invalidTagIssueDate] FROM [Gears] AS [g] LEFT JOIN [Tags] AS [t] ON [g].[Nickname] = [t].[GearNickName] AND [g].[SquadId] = [t].[GearSquadId] -WHERE [t].[IssueDate] > COALESCE(( +WHERE [t].[IssueDate] > ISNULL(( SELECT TOP(1) [t0].[IssueDate] FROM [Tags] AS [t0] WHERE [t0].[GearNickName] = [g].[FullName] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPTManyToManyNoTrackingQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPTManyToManyNoTrackingQuerySqlServerTest.cs index 77159fc36f3..711037a3094 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPTManyToManyNoTrackingQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPTManyToManyNoTrackingQuerySqlServerTest.cs @@ -206,7 +206,7 @@ public override async Task Skip_navigation_select_many_sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([s].[Key1]), 0) +SELECT ISNULL(SUM([s].[Key1]), 0) FROM [Roots] AS [r] INNER JOIN ( SELECT [e0].[Key1], [e].[RootSkipSharedId] @@ -270,7 +270,7 @@ public override async Task Skip_navigation_select_subquery_sum(bool async) AssertSql( """ SELECT ( - SELECT COALESCE(SUM([e1].[Id]), 0) + SELECT ISNULL(SUM([e1].[Id]), 0) FROM [EntityOneEntityTwo] AS [e0] INNER JOIN [EntityOnes] AS [e1] ON [e0].[OneSkipSharedId] = [e1].[Id] WHERE [e].[Id] = [e0].[TwoSkipSharedId]) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPTManyToManyQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPTManyToManyQuerySqlServerTest.cs index 3facfe7e76e..34c2d81cef1 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPTManyToManyQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Inheritance/TPTManyToManyQuerySqlServerTest.cs @@ -205,7 +205,7 @@ public override async Task Skip_navigation_select_many_sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([s].[Key1]), 0) +SELECT ISNULL(SUM([s].[Key1]), 0) FROM [Roots] AS [r] INNER JOIN ( SELECT [e0].[Key1], [e].[RootSkipSharedId] @@ -269,7 +269,7 @@ public override async Task Skip_navigation_select_subquery_sum(bool async) AssertSql( """ SELECT ( - SELECT COALESCE(SUM([e1].[Id]), 0) + SELECT ISNULL(SUM([e1].[Id]), 0) FROM [EntityOneEntityTwo] AS [e0] INNER JOIN [EntityOnes] AS [e1] ON [e0].[OneSkipSharedId] = [e1].[Id] WHERE [e].[Id] = [e0].[TwoSkipSharedId]) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyNoTrackingQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyNoTrackingQuerySqlServerTest.cs index 4fada534e32..08d98fecb7a 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyNoTrackingQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyNoTrackingQuerySqlServerTest.cs @@ -199,7 +199,7 @@ public override async Task Skip_navigation_select_many_sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([s].[Key1]), 0) +SELECT ISNULL(SUM([s].[Key1]), 0) FROM [EntityRoots] AS [e] INNER JOIN ( SELECT [e1].[Key1], [e0].[RootSkipSharedId] @@ -262,7 +262,7 @@ public override async Task Skip_navigation_select_subquery_sum(bool async) AssertSql( """ SELECT ( - SELECT COALESCE(SUM([e1].[Id]), 0) + SELECT ISNULL(SUM([e1].[Id]), 0) FROM [EntityOneEntityTwo] AS [e0] INNER JOIN [EntityOnes] AS [e1] ON [e0].[OneSkipSharedId] = [e1].[Id] WHERE [e].[Id] = [e0].[TwoSkipSharedId]) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyQuerySqlServerTest.cs index a722514a591..87f5a538191 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/ManyToManyQuerySqlServerTest.cs @@ -198,7 +198,7 @@ public override async Task Skip_navigation_select_many_sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([s].[Key1]), 0) +SELECT ISNULL(SUM([s].[Key1]), 0) FROM [EntityRoots] AS [e] INNER JOIN ( SELECT [e1].[Key1], [e0].[RootSkipSharedId] @@ -261,7 +261,7 @@ public override async Task Skip_navigation_select_subquery_sum(bool async) AssertSql( """ SELECT ( - SELECT COALESCE(SUM([e1].[Id]), 0) + SELECT ISNULL(SUM([e1].[Id]), 0) FROM [EntityOneEntityTwo] AS [e0] INNER JOIN [EntityOnes] AS [e1] ON [e0].[OneSkipSharedId] = [e1].[Id] WHERE [e].[Id] = [e0].[TwoSkipSharedId]) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindAggregateOperatorsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindAggregateOperatorsQuerySqlServerTest.cs index 032b5e52de8..9b138dc1c89 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindAggregateOperatorsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindAggregateOperatorsQuerySqlServerTest.cs @@ -107,7 +107,7 @@ public override async Task Sum_over_empty_returns_zero(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) +SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] WHERE [o].[OrderID] = 42 """); @@ -155,7 +155,7 @@ public override async Task Average_after_DefaultIfEmpty_does_not_throw(bool asyn AssertSql( """ -SELECT AVG(CAST(COALESCE([o0].[OrderID], 0) AS float)) +SELECT AVG(CAST(ISNULL([o0].[OrderID], 0) AS float)) FROM ( SELECT 1 AS empty ) AS [e] @@ -173,7 +173,7 @@ public override async Task Max_after_DefaultIfEmpty_does_not_throw(bool async) AssertSql( """ -SELECT MAX(COALESCE([o0].[OrderID], 0)) +SELECT MAX(ISNULL([o0].[OrderID], 0)) FROM ( SELECT 1 AS empty ) AS [e] @@ -190,8 +190,8 @@ public override async Task MaxBy_after_DefaultIfEmpty_does_not_throw(bool async) await base.MaxBy_after_DefaultIfEmpty_does_not_throw(async); AssertSql( -""" -SELECT TOP(1) COALESCE([o0].[OrderID], 0) + """ +SELECT TOP(1) ISNULL([o0].[OrderID], 0) FROM ( SELECT 1 AS empty ) AS [e] @@ -200,7 +200,7 @@ SELECT [o].[OrderID] FROM [Orders] AS [o] WHERE [o].[OrderID] = 10243 ) AS [o0] ON 1 = 1 -ORDER BY COALESCE([o0].[OrderID], 0) DESC +ORDER BY ISNULL([o0].[OrderID], 0) DESC """); } @@ -210,7 +210,7 @@ public override async Task Min_after_DefaultIfEmpty_does_not_throw(bool async) AssertSql( """ -SELECT MIN(COALESCE([o0].[OrderID], 0)) +SELECT MIN(ISNULL([o0].[OrderID], 0)) FROM ( SELECT 1 AS empty ) AS [e] @@ -227,8 +227,8 @@ public override async Task MinBy_after_DefaultIfEmpty_does_not_throw(bool async) await base.MinBy_after_DefaultIfEmpty_does_not_throw(async); AssertSql( -""" -SELECT TOP(1) COALESCE([o0].[OrderID], 0) + """ +SELECT TOP(1) ISNULL([o0].[OrderID], 0) FROM ( SELECT 1 AS empty ) AS [e] @@ -237,7 +237,7 @@ SELECT [o].[OrderID] FROM [Orders] AS [o] WHERE [o].[OrderID] = 10243 ) AS [o0] ON 1 = 1 -ORDER BY COALESCE([o0].[OrderID], 0) +ORDER BY ISNULL([o0].[OrderID], 0) """); } @@ -247,7 +247,7 @@ public override async Task Sum_with_no_data_cast_to_nullable(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) +SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] WHERE [o].[OrderID] < 0 """); @@ -259,7 +259,7 @@ public override async Task Sum_with_no_data_nullable(bool async) AssertSql( """ -SELECT COALESCE(SUM([p].[SupplierID]), 0) +SELECT ISNULL(SUM([p].[SupplierID]), 0) FROM [Products] AS [p] """); } @@ -270,7 +270,7 @@ public override async Task Sum_with_no_arg_empty(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) +SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] WHERE [o].[OrderID] = 42 """); @@ -356,11 +356,11 @@ public override async Task MinBy_no_data_nullable_source(bool async) await base.MinBy_no_data_nullable_source(async); AssertSql( -""" + """ SELECT TOP(1) [p].[SupplierID] FROM [Products] AS [p] WHERE [p].[SupplierID] = -1 -ORDER BY COALESCE([p].[SupplierID], 0) +ORDER BY ISNULL([p].[SupplierID], 0) """); } @@ -443,11 +443,11 @@ public override async Task MinBy_over_subquery(bool async) await base.MinBy_over_subquery(async); AssertSql( -""" + """ SELECT TOP(1) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] FROM [Customers] AS [c] ORDER BY ( - SELECT COALESCE(SUM([o].[OrderID]), 0) + SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID]) """); @@ -572,11 +572,11 @@ public override async Task MaxBy_no_data_nullable_source(bool async) await base.MaxBy_no_data_nullable_source(async); AssertSql( -""" + """ SELECT TOP(1) [p].[SupplierID] FROM [Products] AS [p] WHERE [p].[SupplierID] = -1 -ORDER BY COALESCE([p].[SupplierID], 0) DESC +ORDER BY ISNULL([p].[SupplierID], 0) DESC """); } @@ -671,11 +671,11 @@ public override async Task MaxBy_over_subquery(bool async) await base.MaxBy_over_subquery(async); AssertSql( -""" + """ SELECT TOP(1) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] FROM [Customers] AS [c] ORDER BY ( - SELECT COALESCE(SUM([o].[OrderID]), 0) + SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID]) DESC """); @@ -712,7 +712,7 @@ public override async Task MaxBy_over_sum_subquery(bool async) await base.MaxBy_over_sum_subquery(async); AssertSql( -""" + """ @p='3' SELECT TOP(1) [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] @@ -726,7 +726,7 @@ SELECT TOP(1) [o].[OrderID] FROM [Orders] AS [o] WHERE [c0].[CustomerID] = [o].[CustomerID] ORDER BY 5 + ( - SELECT COALESCE(SUM([o0].[ProductID]), 0) + SELECT ISNULL(SUM([o0].[ProductID]), 0) FROM [Order Details] AS [o0] WHERE [o].[OrderID] = [o0].[OrderID]) DESC) DESC """); @@ -1023,7 +1023,7 @@ public override async Task Sum_with_no_arg(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) +SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] """); } @@ -1034,7 +1034,7 @@ public override async Task Sum_with_binary_expression(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID] * 2), 0) +SELECT ISNULL(SUM([o].[OrderID] * 2), 0) FROM [Orders] AS [o] """); } @@ -1045,7 +1045,7 @@ public override async Task Sum_with_arg(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) +SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] """); } @@ -1056,7 +1056,7 @@ public override async Task Sum_with_arg_expression(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID] + [o].[OrderID]), 0) +SELECT ISNULL(SUM([o].[OrderID] + [o].[OrderID]), 0) FROM [Orders] AS [o] """); } @@ -1102,10 +1102,10 @@ public override async Task Sum_over_subquery(bool async) // #34256: rewrite query to avoid "Cannot perform an aggregate function on an expression containing an aggregate or a subquery" AssertSql( """ -SELECT COALESCE(SUM([s].[value]), 0) +SELECT ISNULL(SUM([s].[value]), 0) FROM [Customers] AS [c] OUTER APPLY ( - SELECT COALESCE(SUM([o].[OrderID]), 0) AS [value] + SELECT ISNULL(SUM([o].[OrderID]), 0) AS [value] FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID] ) AS [s] @@ -1119,14 +1119,14 @@ public override async Task Sum_over_nested_subquery(bool async) // #34256: rewrite query to avoid "Cannot perform an aggregate function on an expression containing an aggregate or a subquery" AssertSql( """ -SELECT COALESCE(SUM([s0].[value]), 0) +SELECT ISNULL(SUM([s0].[value]), 0) FROM [Customers] AS [c] OUTER APPLY ( - SELECT COALESCE(SUM([s].[value]), 0) AS [value] + SELECT ISNULL(SUM([s].[value]), 0) AS [value] FROM [Orders] AS [o] OUTER APPLY ( SELECT 5 + ( - SELECT COALESCE(SUM([o0].[ProductID]), 0) + SELECT ISNULL(SUM([o0].[ProductID]), 0) FROM [Order Details] AS [o0] WHERE [o].[OrderID] = [o0].[OrderID]) AS [value] ) AS [s] @@ -1142,10 +1142,10 @@ public override async Task Sum_over_min_subquery(bool async) // #34256: rewrite query to avoid "Cannot perform an aggregate function on an expression containing an aggregate or a subquery" AssertSql( """ -SELECT COALESCE(SUM([s0].[value]), 0) +SELECT ISNULL(SUM([s0].[value]), 0) FROM [Customers] AS [c] OUTER APPLY ( - SELECT COALESCE(SUM([s].[value]), 0) AS [value] + SELECT ISNULL(SUM([s].[value]), 0) AS [value] FROM [Orders] AS [o] OUTER APPLY ( SELECT 5 + ( @@ -1165,7 +1165,7 @@ public override async Task Sum_over_scalar_returning_subquery(bool async) // #34256: rewrite query to avoid "Cannot perform an aggregate function on an expression containing an aggregate or a subquery" AssertSql( """ -SELECT COALESCE(SUM([s].[OrderID]), 0) +SELECT ISNULL(SUM([s].[OrderID]), 0) FROM [Customers] AS [c] OUTER APPLY ( SELECT TOP(1) [o].[OrderID] @@ -1182,7 +1182,7 @@ public override async Task Sum_over_Any_subquery(bool async) // #34256: rewrite query to avoid "Cannot perform an aggregate function on an expression containing an aggregate or a subquery" AssertSql( """ -SELECT COALESCE(SUM([s].[value]), 0) +SELECT ISNULL(SUM([s].[value]), 0) FROM [Customers] AS [c] OUTER APPLY ( SELECT CASE @@ -1332,7 +1332,7 @@ SELECT AVG([s].[value]) FROM [Customers] AS [c] OUTER APPLY ( SELECT CAST(( - SELECT COALESCE(SUM([o].[OrderID]), 0) + SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID]) AS float) AS [value] ) AS [s] @@ -1491,7 +1491,7 @@ public override async Task Min_over_subquery(bool async) SELECT MIN([s].[value]) FROM [Customers] AS [c] OUTER APPLY ( - SELECT COALESCE(SUM([o].[OrderID]), 0) AS [value] + SELECT ISNULL(SUM([o].[OrderID]), 0) AS [value] FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID] ) AS [s] @@ -1600,7 +1600,7 @@ public override async Task Max_over_subquery(bool async) SELECT MAX([s].[value]) FROM [Customers] AS [c] OUTER APPLY ( - SELECT COALESCE(SUM([o].[OrderID]), 0) AS [value] + SELECT ISNULL(SUM([o].[OrderID]), 0) AS [value] FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID] ) AS [s] @@ -1656,7 +1656,7 @@ SELECT MAX([s].[value]) AS [value] FROM [Orders] AS [o] OUTER APPLY ( SELECT 5 + ( - SELECT COALESCE(SUM([o0].[ProductID]), 0) + SELECT ISNULL(SUM([o0].[ProductID]), 0) FROM [Order Details] AS [o0] WHERE [o].[OrderID] = [o0].[OrderID]) AS [value] ) AS [s] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindGroupByQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindGroupByQuerySqlServerTest.cs index 459367a3c05..ab1873feecd 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindGroupByQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindGroupByQuerySqlServerTest.cs @@ -169,7 +169,7 @@ public override async Task GroupBy_Property_Select_Sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) +SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -181,7 +181,7 @@ public override async Task GroupBy_Property_Select_Sum_Min_Max_Avg(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -253,7 +253,7 @@ public override async Task GroupBy_Property_Select_Key_Sum(bool async) AssertSql( """ -SELECT [o].[CustomerID] AS [Key], COALESCE(SUM([o].[OrderID]), 0) AS [Sum] +SELECT [o].[CustomerID] AS [Key], ISNULL(SUM([o].[OrderID]), 0) AS [Sum] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -265,7 +265,7 @@ public override async Task GroupBy_Property_Select_Key_Sum_Min_Max_Avg(bool asyn AssertSql( """ -SELECT [o].[CustomerID] AS [Key], COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT [o].[CustomerID] AS [Key], ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -277,7 +277,7 @@ public override async Task GroupBy_Property_Select_Sum_Min_Key_Max_Avg(bool asyn AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID] AS [Key], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID] AS [Key], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -289,7 +289,7 @@ public override async Task GroupBy_Property_Select_key_multiple_times_and_aggreg AssertSql( """ -SELECT [o].[CustomerID] AS [Key1], COALESCE(SUM([o].[OrderID]), 0) AS [Sum] +SELECT [o].[CustomerID] AS [Key1], ISNULL(SUM([o].[OrderID]), 0) AS [Sum] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -337,7 +337,7 @@ public override async Task GroupBy_aggregate_projecting_conditional_expression_b SELECT CASE WHEN [o].[OrderDate] IS NULL THEN N'is null' ELSE N'is not null' -END AS [Key], COALESCE(SUM([o].[OrderID]), 0) AS [Sum] +END AS [Key], ISNULL(SUM([o].[OrderID]), 0) AS [Sum] FROM [Orders] AS [o] GROUP BY [o].[OrderDate] """); @@ -409,7 +409,7 @@ public override async Task GroupBy_anonymous_Select_Sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) +SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -421,7 +421,7 @@ public override async Task GroupBy_anonymous_Select_Sum_Min_Max_Avg(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -433,7 +433,7 @@ public override async Task GroupBy_anonymous_with_alias_Select_Key_Sum(bool asyn AssertSql( """ -SELECT [o].[CustomerID] AS [Key], COALESCE(SUM([o].[OrderID]), 0) AS [Sum] +SELECT [o].[CustomerID] AS [Key], ISNULL(SUM([o].[OrderID]), 0) AS [Sum] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -505,7 +505,7 @@ public override async Task GroupBy_Composite_Select_Sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) +SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] GROUP BY [o].[CustomerID], [o].[EmployeeID] """); @@ -517,7 +517,7 @@ public override async Task GroupBy_Composite_Select_Sum_Min_Max_Avg(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID], [o].[EmployeeID] """); @@ -589,7 +589,7 @@ public override async Task GroupBy_Composite_Select_Key_Sum(bool async) AssertSql( """ -SELECT [o].[CustomerID], [o].[EmployeeID], COALESCE(SUM([o].[OrderID]), 0) AS [Sum] +SELECT [o].[CustomerID], [o].[EmployeeID], ISNULL(SUM([o].[OrderID]), 0) AS [Sum] FROM [Orders] AS [o] GROUP BY [o].[CustomerID], [o].[EmployeeID] """); @@ -601,7 +601,7 @@ public override async Task GroupBy_Composite_Select_Key_Sum_Min_Max_Avg(bool asy AssertSql( """ -SELECT [o].[CustomerID], [o].[EmployeeID], COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT [o].[CustomerID], [o].[EmployeeID], ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID], [o].[EmployeeID] """); @@ -613,7 +613,7 @@ public override async Task GroupBy_Composite_Select_Sum_Min_Key_Max_Avg(bool asy AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID], [o].[EmployeeID], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID], [o].[EmployeeID], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID], [o].[EmployeeID] """); @@ -625,7 +625,7 @@ public override async Task GroupBy_Composite_Select_Sum_Min_Key_flattened_Max_Av AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID], [o].[EmployeeID], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID], [o].[EmployeeID], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID], [o].[EmployeeID] """); @@ -637,7 +637,7 @@ public override async Task GroupBy_Dto_as_key_Select_Sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], [o].[CustomerID], [o].[EmployeeID] +SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], [o].[CustomerID], [o].[EmployeeID] FROM [Orders] AS [o] GROUP BY [o].[CustomerID], [o].[EmployeeID] """); @@ -661,7 +661,7 @@ public override async Task GroupBy_Composite_Select_Dto_Sum_Min_Key_flattened_Ma AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID] AS [CustomerId], [o].[EmployeeID] AS [EmployeeId], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID] AS [CustomerId], [o].[EmployeeID] AS [EmployeeId], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID], [o].[EmployeeID] """); @@ -673,7 +673,7 @@ public override async Task GroupBy_Composite_Select_Sum_Min_part_Key_flattened_M AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], [o].[CustomerID], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID], [o].[EmployeeID] """); @@ -685,7 +685,7 @@ public override async Task GroupBy_Constant_Select_Sum_Min_Key_Max_Avg(bool asyn AssertSql( """ -SELECT COALESCE(SUM([o0].[OrderID]), 0) AS [Sum], MIN([o0].[OrderID]) AS [Min], [o0].[Key], MAX([o0].[OrderID]) AS [Max], AVG(CAST([o0].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o0].[OrderID]), 0) AS [Sum], MIN([o0].[OrderID]) AS [Min], [o0].[Key], MAX([o0].[OrderID]) AS [Max], AVG(CAST([o0].[OrderID] AS float)) AS [Avg] FROM ( SELECT [o].[OrderID], 2 AS [Key] FROM [Orders] AS [o] @@ -700,7 +700,7 @@ public override async Task GroupBy_Constant_with_element_selector_Select_Sum(boo AssertSql( """ -SELECT COALESCE(SUM([o0].[OrderID]), 0) AS [Sum] +SELECT ISNULL(SUM([o0].[OrderID]), 0) AS [Sum] FROM ( SELECT [o].[OrderID], 2 AS [Key] FROM [Orders] AS [o] @@ -715,7 +715,7 @@ public override async Task GroupBy_Constant_with_element_selector_Select_Sum2(bo AssertSql( """ -SELECT COALESCE(SUM([o0].[OrderID]), 0) AS [Sum] +SELECT ISNULL(SUM([o0].[OrderID]), 0) AS [Sum] FROM ( SELECT [o].[OrderID], 2 AS [Key] FROM [Orders] AS [o] @@ -730,7 +730,7 @@ public override async Task GroupBy_Constant_with_element_selector_Select_Sum3(bo AssertSql( """ -SELECT COALESCE(SUM([o0].[OrderID]), 0) AS [Sum] +SELECT ISNULL(SUM([o0].[OrderID]), 0) AS [Sum] FROM ( SELECT [o].[OrderID], 2 AS [Key] FROM [Orders] AS [o] @@ -745,7 +745,7 @@ public override async Task GroupBy_after_predicate_Constant_Select_Sum_Min_Key_M AssertSql( """ -SELECT COALESCE(SUM([o0].[OrderID]), 0) AS [Sum], MIN([o0].[OrderID]) AS [Min], [o0].[Key] AS [Random], MAX([o0].[OrderID]) AS [Max], AVG(CAST([o0].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o0].[OrderID]), 0) AS [Sum], MIN([o0].[OrderID]) AS [Min], [o0].[Key] AS [Random], MAX([o0].[OrderID]) AS [Max], AVG(CAST([o0].[OrderID] AS float)) AS [Avg] FROM ( SELECT [o].[OrderID], 2 AS [Key] FROM [Orders] AS [o] @@ -761,7 +761,7 @@ public override async Task GroupBy_Constant_with_element_selector_Select_Sum_Min AssertSql( """ -SELECT COALESCE(SUM([o0].[OrderID]), 0) AS [Sum], [o0].[Key] +SELECT ISNULL(SUM([o0].[OrderID]), 0) AS [Sum], [o0].[Key] FROM ( SELECT [o].[OrderID], 2 AS [Key] FROM [Orders] AS [o] @@ -780,7 +780,7 @@ SELECT MIN(CASE WHEN 1 = [o0].[Key] THEN [o0].[OrderDate] END) AS [Min], MAX(CASE WHEN 1 = [o0].[Key] THEN [o0].[OrderDate] -END) AS [Max], COALESCE(SUM(CASE +END) AS [Max], ISNULL(SUM(CASE WHEN 1 = [o0].[Key] THEN [o0].[OrderID] END), 0) AS [Sum], AVG(CASE WHEN 1 = [o0].[Key] THEN CAST([o0].[OrderID] AS float) @@ -802,7 +802,7 @@ public override async Task GroupBy_param_Select_Sum_Min_Key_Max_Avg(bool async) """ @a='2' -SELECT COALESCE(SUM([o0].[OrderID]), 0) AS [Sum], MIN([o0].[OrderID]) AS [Min], [o0].[Key], MAX([o0].[OrderID]) AS [Max], AVG(CAST([o0].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o0].[OrderID]), 0) AS [Sum], MIN([o0].[OrderID]) AS [Min], [o0].[Key], MAX([o0].[OrderID]) AS [Max], AVG(CAST([o0].[OrderID] AS float)) AS [Avg] FROM ( SELECT [o].[OrderID], @a AS [Key] FROM [Orders] AS [o] @@ -819,7 +819,7 @@ public override async Task GroupBy_param_with_element_selector_Select_Sum(bool a """ @a='2' -SELECT COALESCE(SUM([o0].[OrderID]), 0) AS [Sum] +SELECT ISNULL(SUM([o0].[OrderID]), 0) AS [Sum] FROM ( SELECT [o].[OrderID], @a AS [Key] FROM [Orders] AS [o] @@ -836,7 +836,7 @@ public override async Task GroupBy_param_with_element_selector_Select_Sum2(bool """ @a='2' -SELECT COALESCE(SUM([o0].[OrderID]), 0) AS [Sum] +SELECT ISNULL(SUM([o0].[OrderID]), 0) AS [Sum] FROM ( SELECT [o].[OrderID], @a AS [Key] FROM [Orders] AS [o] @@ -853,7 +853,7 @@ public override async Task GroupBy_param_with_element_selector_Select_Sum3(bool """ @a='2' -SELECT COALESCE(SUM([o0].[OrderID]), 0) AS [Sum] +SELECT ISNULL(SUM([o0].[OrderID]), 0) AS [Sum] FROM ( SELECT [o].[OrderID], @a AS [Key] FROM [Orders] AS [o] @@ -870,7 +870,7 @@ public override async Task GroupBy_param_with_element_selector_Select_Sum_Min_Ke """ @a='2' -SELECT COALESCE(SUM([o0].[OrderID]), 0) AS [Sum], [o0].[Key] +SELECT ISNULL(SUM([o0].[OrderID]), 0) AS [Sum], [o0].[Key] FROM ( SELECT [o].[OrderID], @a AS [Key] FROM [Orders] AS [o] @@ -961,7 +961,7 @@ public override async Task GroupBy_Property_scalar_element_selector_Sum(bool asy AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) +SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -973,7 +973,7 @@ public override async Task GroupBy_Property_scalar_element_selector_Sum_Min_Max_ AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -1045,7 +1045,7 @@ public override async Task GroupBy_Property_anonymous_element_selector_Sum(bool AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) +SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -1057,7 +1057,7 @@ public override async Task GroupBy_Property_anonymous_element_selector_Sum_Min_M AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[EmployeeID]) AS [Min], MAX([o].[EmployeeID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[EmployeeID]) AS [Min], MAX([o].[EmployeeID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -1069,7 +1069,7 @@ public override async Task GroupBy_element_selector_complex_aggregate(bool async AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID] + 1), 0) +SELECT ISNULL(SUM([o].[OrderID] + 1), 0) FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -1081,7 +1081,7 @@ public override async Task GroupBy_element_selector_complex_aggregate2(bool asyn AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID] + 1), 0) +SELECT ISNULL(SUM([o].[OrderID] + 1), 0) FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -1093,7 +1093,7 @@ public override async Task GroupBy_element_selector_complex_aggregate3(bool asyn AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID] + 1), 0) +SELECT ISNULL(SUM([o].[OrderID] + 1), 0) FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -1105,7 +1105,7 @@ public override async Task GroupBy_element_selector_complex_aggregate4(bool asyn AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID] + 1), 0) +SELECT ISNULL(SUM([o].[OrderID] + 1), 0) FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -1117,7 +1117,7 @@ public override async Task Element_selector_with_case_block_repeated_inside_anot AssertSql( """ -SELECT [o].[OrderID], COALESCE(SUM(CASE +SELECT [o].[OrderID], ISNULL(SUM(CASE WHEN [o].[CustomerID] = N'ALFKI' THEN CASE WHEN [o].[OrderID] > 1000 THEN [o].[OrderID] ELSE -[o].[OrderID] @@ -1153,7 +1153,7 @@ public override async Task GroupBy_empty_key_Aggregate(bool async) AssertSql( """ -SELECT COALESCE(SUM([o0].[OrderID]), 0) +SELECT ISNULL(SUM([o0].[OrderID]), 0) FROM ( SELECT [o].[OrderID], 1 AS [Key] FROM [Orders] AS [o] @@ -1168,7 +1168,7 @@ public override async Task GroupBy_empty_key_Aggregate_Key(bool async) AssertSql( """ -SELECT COALESCE(SUM([o0].[OrderID]), 0) AS [Sum] +SELECT ISNULL(SUM([o0].[OrderID]), 0) AS [Sum] FROM ( SELECT [o].[OrderID], 1 AS [Key] FROM [Orders] AS [o] @@ -1183,7 +1183,7 @@ public override async Task OrderBy_GroupBy_Aggregate(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) +SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -1503,7 +1503,7 @@ public override async Task Select_anonymous_GroupBy_Aggregate(bool async) AssertSql( """ -SELECT MIN([o].[OrderDate]) AS [Min], MAX([o].[OrderDate]) AS [Max], COALESCE(SUM([o].[OrderID]), 0) AS [Sum], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT MIN([o].[OrderDate]) AS [Min], MAX([o].[OrderDate]) AS [Max], ISNULL(SUM([o].[OrderID]), 0) AS [Sum], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] WHERE [o].[OrderID] < 10300 GROUP BY [o].[CustomerID] @@ -1560,8 +1560,8 @@ public override async Task GroupBy_complex_key_aggregate_2(bool async) AssertSql( """ -SELECT [o0].[Key] AS [Month], COALESCE(SUM([o0].[OrderID]), 0) AS [Total], ( - SELECT COALESCE(SUM([o1].[OrderID]), 0) +SELECT [o0].[Key] AS [Month], ISNULL(SUM([o0].[OrderID]), 0) AS [Total], ( + SELECT ISNULL(SUM([o1].[OrderID]), 0) FROM [Orders] AS [o1] WHERE DATEPART(month, [o1].[OrderDate]) = [o0].[Key] OR ([o1].[OrderDate] IS NULL AND [o0].[Key] IS NULL)) AS [Payment] FROM ( @@ -1616,7 +1616,7 @@ public override async Task GroupBy_OrderBy_count_Select_sum(bool async) AssertSql( """ -SELECT [o].[CustomerID] AS [Key], COALESCE(SUM([o].[OrderID]), 0) AS [Sum] +SELECT [o].[CustomerID] AS [Key], ISNULL(SUM([o].[OrderID]), 0) AS [Sum] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] ORDER BY COUNT(*), [o].[CustomerID] @@ -1775,7 +1775,7 @@ public override async Task GroupBy_filter_count_OrderBy_count_Select_sum(bool as AssertSql( """ -SELECT [o].[CustomerID] AS [Key], COUNT(*) AS [Count], COALESCE(SUM([o].[OrderID]), 0) AS [Sum] +SELECT [o].[CustomerID] AS [Key], COUNT(*) AS [Count], ISNULL(SUM([o].[OrderID]), 0) AS [Sum] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] HAVING COUNT(*) > 4 @@ -1971,7 +1971,7 @@ public override async Task GroupBy_with_result_selector(bool async) AssertSql( """ -SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] +SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], MIN([o].[OrderID]) AS [Min], MAX([o].[OrderID]) AS [Max], AVG(CAST([o].[OrderID] AS float)) AS [Avg] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -2176,7 +2176,7 @@ public override async Task GroupBy_Where_Sum(bool async) AssertSql( """ -SELECT COALESCE(SUM(CASE +SELECT ISNULL(SUM(CASE WHEN [o].[OrderID] < 10300 THEN [o].[OrderID] END), 0) FROM [Orders] AS [o] @@ -2262,10 +2262,10 @@ public override async Task GroupBy_multiple_Sum_with_conditional_projection(bool AssertSql( """ -SELECT [o].[CustomerID], COALESCE(SUM(CASE +SELECT [o].[CustomerID], ISNULL(SUM(CASE WHEN [o].[OrderID] < 11000 THEN [o].[OrderID] ELSE 0 -END), 0) AS [TenK], COALESCE(SUM(CASE +END), 0) AS [TenK], ISNULL(SUM(CASE WHEN [o].[OrderID] >= 11000 THEN [o].[OrderID] ELSE 0 END), 0) AS [EleventK] @@ -2280,10 +2280,10 @@ public override async Task GroupBy_multiple_Sum_with_Select_conditional_projecti AssertSql( """ -SELECT [o].[CustomerID], COALESCE(SUM(CASE +SELECT [o].[CustomerID], ISNULL(SUM(CASE WHEN [o].[OrderID] < 11000 THEN [o].[OrderID] ELSE 0 -END), 0) AS [TenK], COALESCE(SUM(CASE +END), 0) AS [TenK], ISNULL(SUM(CASE WHEN [o].[OrderID] >= 11000 THEN [o].[OrderID] ELSE 0 END), 0) AS [EleventK] @@ -2519,7 +2519,7 @@ public override async Task GroupBy_Select_Distinct_aggregate(bool async) AssertSql( """ -SELECT [o].[CustomerID] AS [Key], AVG(DISTINCT (CAST([o].[OrderID] AS float))) AS [Average], COUNT(DISTINCT ([o].[EmployeeID])) AS [Count], COUNT_BIG(DISTINCT ([o].[EmployeeID])) AS [LongCount], MAX([o].[OrderDate]) AS [Max], MIN([o].[OrderDate]) AS [Min], COALESCE(SUM(DISTINCT ([o].[OrderID])), 0) AS [Sum] +SELECT [o].[CustomerID] AS [Key], AVG(DISTINCT (CAST([o].[OrderID] AS float))) AS [Average], COUNT(DISTINCT ([o].[EmployeeID])) AS [Count], COUNT_BIG(DISTINCT ([o].[EmployeeID])) AS [LongCount], MAX([o].[OrderDate]) AS [Max], MIN([o].[OrderDate]) AS [Min], ISNULL(SUM(DISTINCT ([o].[OrderID])), 0) AS [Sum] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -2557,7 +2557,7 @@ public override async Task MinMax_after_GroupBy_aggregate(bool async) """ SELECT MIN([o0].[c]) FROM ( - SELECT COALESCE(SUM([o].[OrderID]), 0) AS [c] + SELECT ISNULL(SUM([o].[OrderID]), 0) AS [c] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] ) AS [o0] @@ -2566,7 +2566,7 @@ GROUP BY [o].[CustomerID] """ SELECT MAX([o0].[c]) FROM ( - SELECT COALESCE(SUM([o].[OrderID]), 0) AS [c] + SELECT ISNULL(SUM([o].[OrderID]), 0) AS [c] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] ) AS [o0] @@ -2601,7 +2601,7 @@ WHEN NOT EXISTS ( SELECT 1 FROM [Orders] AS [o] GROUP BY [o].[CustomerID] - HAVING COALESCE(SUM([o].[OrderID]), 0) < 0) THEN CAST(1 AS bit) + HAVING ISNULL(SUM([o].[OrderID]), 0) < 0) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END """); @@ -2860,7 +2860,7 @@ public override async Task GroupBy_with_group_key_access_thru_navigation(bool as AssertSql( """ -SELECT [o0].[CustomerID] AS [Key], COALESCE(SUM([o].[OrderID]), 0) AS [Aggregate] +SELECT [o0].[CustomerID] AS [Key], ISNULL(SUM([o].[OrderID]), 0) AS [Aggregate] FROM [Order Details] AS [o] INNER JOIN [Orders] AS [o0] ON [o].[OrderID] = [o0].[OrderID] GROUP BY [o0].[CustomerID] @@ -2873,7 +2873,7 @@ public override async Task GroupBy_with_group_key_access_thru_nested_navigation( AssertSql( """ -SELECT [c].[Country] AS [Key], COALESCE(SUM([o].[OrderID]), 0) AS [Aggregate] +SELECT [c].[Country] AS [Key], ISNULL(SUM([o].[OrderID]), 0) AS [Aggregate] FROM [Order Details] AS [o] INNER JOIN [Orders] AS [o0] ON [o].[OrderID] = [o0].[OrderID] LEFT JOIN [Customers] AS [c] ON [o0].[CustomerID] = [c].[CustomerID] @@ -2887,7 +2887,7 @@ public override async Task GroupBy_with_group_key_being_navigation(bool async) AssertSql( """ -SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], COALESCE(SUM([o].[OrderID]), 0) AS [Aggregate] +SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate], ISNULL(SUM([o].[OrderID]), 0) AS [Aggregate] FROM [Order Details] AS [o] INNER JOIN [Orders] AS [o0] ON [o].[OrderID] = [o0].[OrderID] GROUP BY [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate] @@ -2900,7 +2900,7 @@ public override async Task GroupBy_with_group_key_being_nested_navigation(bool a AssertSql( """ -SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], COALESCE(SUM([o].[OrderID]), 0) AS [Aggregate] +SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ISNULL(SUM([o].[OrderID]), 0) AS [Aggregate] FROM [Order Details] AS [o] INNER JOIN [Orders] AS [o0] ON [o].[OrderID] = [o0].[OrderID] LEFT JOIN [Customers] AS [c] ON [o0].[CustomerID] = [c].[CustomerID] @@ -2936,7 +2936,7 @@ public override async Task GroupBy_with_order_by_skip_and_another_order_by(bool """ @p='80' -SELECT COALESCE(SUM([o0].[OrderID]), 0) +SELECT ISNULL(SUM([o0].[OrderID]), 0) FROM ( SELECT [o].[OrderID], [o].[CustomerID] FROM [Orders] AS [o] @@ -3448,7 +3448,7 @@ public override async Task Complex_query_with_groupBy_in_subquery1(bool async) SELECT [c].[CustomerID], [o0].[Sum], [o0].[CustomerID] FROM [Customers] AS [c] OUTER APPLY ( - SELECT COALESCE(SUM([o].[OrderID]), 0) AS [Sum], [o].[CustomerID] + SELECT ISNULL(SUM([o].[OrderID]), 0) AS [Sum], [o].[CustomerID] FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID] GROUP BY [o].[CustomerID] @@ -3466,7 +3466,7 @@ public override async Task Complex_query_with_groupBy_in_subquery2(bool async) SELECT [c].[CustomerID], [o0].[Max], [o0].[Sum], [o0].[CustomerID] FROM [Customers] AS [c] OUTER APPLY ( - SELECT MAX(CAST(LEN([o].[CustomerID]) AS int)) AS [Max], COALESCE(SUM([o].[OrderID]), 0) AS [Sum], [o].[CustomerID] + SELECT MAX(CAST(LEN([o].[CustomerID]) AS int)) AS [Max], ISNULL(SUM([o].[OrderID]), 0) AS [Sum], [o].[CustomerID] FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID] GROUP BY [o].[CustomerID] @@ -3484,7 +3484,7 @@ public override async Task Complex_query_with_groupBy_in_subquery3(bool async) SELECT [c].[CustomerID], [o0].[Max], [o0].[Sum], [o0].[CustomerID] FROM [Customers] AS [c] OUTER APPLY ( - SELECT MAX(CAST(LEN([o].[CustomerID]) AS int)) AS [Max], COALESCE(SUM([o].[OrderID]), 0) AS [Sum], [o].[CustomerID] + SELECT MAX(CAST(LEN([o].[CustomerID]) AS int)) AS [Max], ISNULL(SUM([o].[OrderID]), 0) AS [Sum], [o].[CustomerID] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] ) AS [o0] @@ -3510,10 +3510,10 @@ public override async Task Where_select_function_groupby_followed_by_another_sel AssertSql( """ -SELECT [o].[CustomerID] AS [Key], COALESCE(SUM(CASE +SELECT [o].[CustomerID] AS [Key], ISNULL(SUM(CASE WHEN 2020 - DATEPART(year, [o].[OrderDate]) <= 30 THEN [o].[OrderID] ELSE 0 -END), 0) AS [Sum1], COALESCE(SUM(CASE +END), 0) AS [Sum1], ISNULL(SUM(CASE WHEN 2020 - DATEPART(year, [o].[OrderDate]) > 30 AND 2020 - DATEPART(year, [o].[OrderDate]) <= 60 THEN [o].[OrderID] ELSE 0 END), 0) AS [Sum2] @@ -3554,7 +3554,7 @@ public override async Task Group_by_with_arithmetic_operation_inside_aggregate(b AssertSql( """ -SELECT [o].[CustomerID] AS [Key], COALESCE(SUM([o].[OrderID] + CAST(LEN([o].[CustomerID]) AS int)), 0) AS [Sum] +SELECT [o].[CustomerID] AS [Key], ISNULL(SUM([o].[OrderID] + CAST(LEN([o].[CustomerID]) AS int)), 0) AS [Sum] FROM [Orders] AS [o] GROUP BY [o].[CustomerID] """); @@ -3640,7 +3640,7 @@ public override async Task GroupBy_aggregate_from_multiple_query_in_same_project AssertSql( """ -SELECT [o].[CustomerID] AS [Key], COALESCE(( +SELECT [o].[CustomerID] AS [Key], ISNULL(( SELECT TOP(1) COUNT(*) + MIN([o].[OrderID]) FROM [Employees] AS [e] WHERE [e].[City] = N'Seattle' @@ -3765,7 +3765,7 @@ public override async Task Complex_query_with_group_by_in_subquery5(bool async) """ SELECT [s].[c], [s].[ProductID], [c1].[CustomerID], [c1].[City] FROM ( - SELECT COALESCE(SUM([o].[ProductID] + [o].[OrderID] * 1000), 0) AS [c], [o].[ProductID], MIN([o].[OrderID] / 100) AS [c0] + SELECT ISNULL(SUM([o].[ProductID] + [o].[OrderID] * 1000), 0) AS [c], [o].[ProductID], MIN([o].[OrderID] / 100) AS [c0] FROM [Order Details] AS [o] INNER JOIN [Orders] AS [o0] ON [o].[OrderID] = [o0].[OrderID] LEFT JOIN [Customers] AS [c] ON [o0].[CustomerID] = [c].[CustomerID] @@ -3790,7 +3790,7 @@ public override async Task Complex_query_with_groupBy_in_subquery4(bool async) SELECT [c].[CustomerID], [s1].[Sum], [s1].[Count], [s1].[Key] FROM [Customers] AS [c] OUTER APPLY ( - SELECT COALESCE(SUM([s].[OrderID]), 0) AS [Sum], ( + SELECT ISNULL(SUM([s].[OrderID]), 0) AS [Sum], ( SELECT COUNT(*) FROM ( SELECT [o0].[CustomerID], COALESCE([c1].[City], N'') + COALESCE([o0].[CustomerID], N'') AS [Key] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindMiscellaneousQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindMiscellaneousQuerySqlServerTest.cs index 75594680edc..9988d2cf4c7 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindMiscellaneousQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindMiscellaneousQuerySqlServerTest.cs @@ -4452,7 +4452,7 @@ public override async Task Select_take_sum(bool async) """ @p='10' -SELECT COALESCE(SUM([o0].[OrderID]), 0) +SELECT ISNULL(SUM([o0].[OrderID]), 0) FROM ( SELECT TOP(@p) [o].[OrderID] FROM [Orders] AS [o] @@ -4595,7 +4595,7 @@ public override async Task Select_skip_sum(bool async) """ @p='10' -SELECT COALESCE(SUM([o0].[OrderID]), 0) +SELECT ISNULL(SUM([o0].[OrderID]), 0) FROM ( SELECT [o].[OrderID] FROM [Orders] AS [o] @@ -4675,7 +4675,7 @@ public override async Task Select_distinct_sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([o0].[OrderID]), 0) +SELECT ISNULL(SUM([o0].[OrderID]), 0) FROM ( SELECT DISTINCT [o].[OrderID] FROM [Orders] AS [o] @@ -5740,7 +5740,7 @@ public override async Task DefaultIfEmpty_Sum_over_collection_navigation(bool as AssertSql( """ SELECT [c].[CustomerID], ( - SELECT COALESCE(SUM(COALESCE([o0].[OrderID], 0)), 0) + SELECT ISNULL(SUM(ISNULL([o0].[OrderID], 0)), 0) FROM ( SELECT 1 AS empty ) AS [e] @@ -6447,7 +6447,7 @@ public override async Task SelectMany_correlated_with_Select_value_type_and_Defa AssertSql( """ -SELECT COALESCE([o0].[OrderID], 0) +SELECT ISNULL([o0].[OrderID], 0) FROM [Customers] AS [c] OUTER APPLY ( SELECT TOP(2) [o].[OrderID] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindNavigationsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindNavigationsQuerySqlServerTest.cs index 273f37ae1ef..9505241cd03 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindNavigationsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindNavigationsQuerySqlServerTest.cs @@ -711,7 +711,7 @@ public override async Task Collection_select_nav_prop_sum(bool async) AssertSql( """ SELECT ( - SELECT COALESCE(SUM([o].[OrderID]), 0) + SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID]) AS [Sum] FROM [Customers] AS [c] @@ -725,7 +725,7 @@ public override async Task Collection_select_nav_prop_sum_plus_one(bool async) AssertSql( """ SELECT ( - SELECT COALESCE(SUM([o].[OrderID]), 0) + SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID]) + 1 AS [Sum] FROM [Customers] AS [c] @@ -741,7 +741,7 @@ public override async Task Collection_where_nav_prop_sum(bool async) SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] FROM [Customers] AS [c] WHERE ( - SELECT COALESCE(SUM([o].[OrderID]), 0) + SELECT ISNULL(SUM([o].[OrderID]), 0) FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID]) > 1000 """); @@ -996,7 +996,7 @@ public override async Task Project_single_scalar_value_subquery_in_query_with_op """ @p='3' -SELECT [o0].[OrderID], COALESCE(( +SELECT [o0].[OrderID], ISNULL(( SELECT TOP(1) [o1].[OrderID] FROM [Order Details] AS [o1] WHERE [o0].[OrderID] = [o1].[OrderID] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSelectQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSelectQuerySqlServerTest.cs index 2f80f9c7244..8e1bd9b74a1 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSelectQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSelectQuerySqlServerTest.cs @@ -418,8 +418,8 @@ public override async Task Select_nested_collection_multi_level5(bool async) AssertSql( """ -SELECT COALESCE(( - SELECT TOP(1) COALESCE(( +SELECT ISNULL(( + SELECT TOP(1) ISNULL(( SELECT TOP(1) [o0].[ProductID] FROM [Order Details] AS [o0] WHERE [o].[OrderID] = [o0].[OrderID] AND ([o0].[OrderID] <> ( @@ -445,8 +445,8 @@ public override async Task Select_nested_collection_multi_level6(bool async) AssertSql( """ -SELECT COALESCE(( - SELECT TOP(1) COALESCE(( +SELECT ISNULL(( + SELECT TOP(1) ISNULL(( SELECT TOP(1) [o0].[ProductID] FROM [Order Details] AS [o0] WHERE [o].[OrderID] = [o0].[OrderID] AND [o0].[OrderID] <> CAST(LEN([c].[CustomerID]) AS int) @@ -945,7 +945,7 @@ public override async Task Project_single_element_from_collection_with_OrderBy_o AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [o0].[OrderID] FROM [Order Details] AS [o0] INNER JOIN [Products] AS [p] ON [o0].[ProductID] = [p].[ProductID] @@ -1435,7 +1435,7 @@ public override async Task FirstOrDefault_over_empty_collection_of_value_type_re AssertSql( """ -SELECT [c].[CustomerID], COALESCE(( +SELECT [c].[CustomerID], ISNULL(( SELECT TOP(1) [o].[OrderID] FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID] @@ -1972,7 +1972,7 @@ public override async Task Reverse_in_projection_scalar_subquery(bool async) AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [o].[OrderID] FROM [Orders] AS [o] ORDER BY [o].[OrderDate] DESC, [o].[OrderID]), 0) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NullSemanticsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NullSemanticsQuerySqlServerTest.cs index 0c95b4bba97..87103bf27c7 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NullSemanticsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NullSemanticsQuerySqlServerTest.cs @@ -2852,7 +2852,7 @@ public override async Task Where_coalesce(bool async) """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE COALESCE([e].[NullableBoolA], CAST(1 AS bit)) = CAST(1 AS bit) +WHERE ISNULL([e].[NullableBoolA], CAST(1 AS bit)) = CAST(1 AS bit) """); } @@ -2876,7 +2876,7 @@ public override async Task Where_coalesce_shortcircuit_many(bool async) """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE COALESCE([e].[NullableBoolA], CASE +WHERE ISNULL([e].[NullableBoolA], CASE WHEN [e].[BoolA] = CAST(1 AS bit) OR [e].[BoolB] = CAST(1 AS bit) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END) = CAST(1 AS bit) @@ -2915,7 +2915,7 @@ public override async Task Where_equal_with_coalesce(bool async) """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE COALESCE([e].[NullableStringA], [e].[NullableStringB]) = [e].[NullableStringC] OR ([e].[NullableStringA] IS NULL AND [e].[NullableStringB] IS NULL AND [e].[NullableStringC] IS NULL) +WHERE ISNULL([e].[NullableStringA], [e].[NullableStringB]) = [e].[NullableStringC] OR ([e].[NullableStringA] IS NULL AND [e].[NullableStringB] IS NULL AND [e].[NullableStringC] IS NULL) """); } @@ -2927,7 +2927,7 @@ public override async Task Where_not_equal_with_coalesce(bool async) """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE (COALESCE([e].[NullableStringA], [e].[NullableStringB]) <> [e].[NullableStringC] OR ([e].[NullableStringA] IS NULL AND [e].[NullableStringB] IS NULL) OR [e].[NullableStringC] IS NULL) AND ([e].[NullableStringA] IS NOT NULL OR [e].[NullableStringB] IS NOT NULL OR [e].[NullableStringC] IS NOT NULL) +WHERE (ISNULL([e].[NullableStringA], [e].[NullableStringB]) <> [e].[NullableStringC] OR ([e].[NullableStringA] IS NULL AND [e].[NullableStringB] IS NULL) OR [e].[NullableStringC] IS NULL) AND ([e].[NullableStringA] IS NOT NULL OR [e].[NullableStringB] IS NOT NULL OR [e].[NullableStringC] IS NOT NULL) """); } @@ -2939,7 +2939,7 @@ public override async Task Where_equal_with_coalesce_both_sides(bool async) """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE COALESCE([e].[NullableStringA], [e].[NullableStringB]) = COALESCE([e].[NullableStringC], [e].[StringA]) +WHERE ISNULL([e].[NullableStringA], [e].[NullableStringB]) = ISNULL([e].[NullableStringC], [e].[StringA]) """); } @@ -2951,7 +2951,7 @@ public override async Task Where_not_equal_with_coalesce_both_sides(bool async) """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE (COALESCE([e].[NullableIntA], [e].[NullableIntB]) <> COALESCE([e].[NullableIntC], [e].[NullableIntB]) OR ([e].[NullableIntA] IS NULL AND [e].[NullableIntB] IS NULL) OR ([e].[NullableIntC] IS NULL AND [e].[NullableIntB] IS NULL)) AND ([e].[NullableIntA] IS NOT NULL OR [e].[NullableIntB] IS NOT NULL OR [e].[NullableIntC] IS NOT NULL OR [e].[NullableIntB] IS NOT NULL) +WHERE (ISNULL([e].[NullableIntA], [e].[NullableIntB]) <> ISNULL([e].[NullableIntC], [e].[NullableIntB]) OR ([e].[NullableIntA] IS NULL AND [e].[NullableIntB] IS NULL) OR ([e].[NullableIntC] IS NULL AND [e].[NullableIntB] IS NULL)) AND ([e].[NullableIntA] IS NOT NULL OR [e].[NullableIntB] IS NOT NULL OR [e].[NullableIntC] IS NOT NULL OR [e].[NullableIntB] IS NOT NULL) """); } @@ -3402,7 +3402,7 @@ public override async Task Projecting_nullable_bool_with_coalesce(bool async) AssertSql( """ -SELECT [e].[Id], COALESCE([e].[NullableBoolA], CAST(0 AS bit)) AS [Coalesce] +SELECT [e].[Id], ISNULL([e].[NullableBoolA], CAST(0 AS bit)) AS [Coalesce] FROM [Entities1] AS [e] """); } @@ -3413,12 +3413,12 @@ public override async Task Projecting_nullable_bool_with_coalesce_nested(bool as AssertSql( """ -SELECT [e].[Id], COALESCE([e].[NullableBoolA], [e].[NullableBoolB], CAST(0 AS bit)) AS [Coalesce] +SELECT [e].[Id], ISNULL(ISNULL([e].[NullableBoolA], [e].[NullableBoolB]), CAST(0 AS bit)) AS [Coalesce] FROM [Entities1] AS [e] """, // """ -SELECT [e].[Id], COALESCE([e].[NullableBoolA], [e].[NullableBoolB], CAST(0 AS bit)) AS [Coalesce] +SELECT [e].[Id], ISNULL(ISNULL([e].[NullableBoolA], [e].[NullableBoolB]), CAST(0 AS bit)) AS [Coalesce] FROM [Entities1] AS [e] """); } @@ -3525,25 +3525,25 @@ public override async Task Null_semantics_coalesce(bool async) """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = COALESCE([e].[NullableBoolB], [e].[BoolC]) +WHERE [e].[NullableBoolA] = ISNULL([e].[NullableBoolB], [e].[BoolC]) """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = COALESCE([e].[NullableBoolB], [e].[NullableBoolC]) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL AND [e].[NullableBoolC] IS NULL) +WHERE [e].[NullableBoolA] = ISNULL([e].[NullableBoolB], [e].[NullableBoolC]) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL AND [e].[NullableBoolC] IS NULL) """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE COALESCE([e].[NullableBoolB], [e].[BoolC]) <> [e].[NullableBoolA] OR [e].[NullableBoolA] IS NULL +WHERE ISNULL([e].[NullableBoolB], [e].[BoolC]) <> [e].[NullableBoolA] OR [e].[NullableBoolA] IS NULL """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE (COALESCE([e].[NullableBoolB], [e].[NullableBoolC]) <> [e].[NullableBoolA] OR ([e].[NullableBoolB] IS NULL AND [e].[NullableBoolC] IS NULL) OR [e].[NullableBoolA] IS NULL) AND ([e].[NullableBoolB] IS NOT NULL OR [e].[NullableBoolC] IS NOT NULL OR [e].[NullableBoolA] IS NOT NULL) +WHERE (ISNULL([e].[NullableBoolB], [e].[NullableBoolC]) <> [e].[NullableBoolA] OR ([e].[NullableBoolB] IS NULL AND [e].[NullableBoolC] IS NULL) OR [e].[NullableBoolA] IS NULL) AND ([e].[NullableBoolB] IS NOT NULL OR [e].[NullableBoolC] IS NOT NULL OR [e].[NullableBoolA] IS NOT NULL) """); } @@ -3630,7 +3630,7 @@ FROM [Entities1] AS [e] INNER JOIN [Entities2] AS [e0] ON ([e].[NullableStringA] = [e0].[NullableStringB] OR ([e].[NullableStringA] IS NULL AND [e0].[NullableStringB] IS NULL)) AND CASE WHEN ([e].[NullableStringB] <> [e].[NullableStringC] OR [e].[NullableStringB] IS NULL OR [e].[NullableStringC] IS NULL) AND ([e].[NullableStringB] IS NOT NULL OR [e].[NullableStringC] IS NOT NULL) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) -END = COALESCE([e0].[NullableBoolA], [e0].[BoolC]) +END = ISNULL([e0].[NullableBoolA], [e0].[BoolC]) """); } @@ -4259,7 +4259,7 @@ public override async Task Coalesce_not_equal(bool async) """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE COALESCE([e].[NullableIntA], 0) <> 0 +WHERE ISNULL([e].[NullableIntA], 0) <> 0 """); } @@ -5150,7 +5150,7 @@ public override async Task Is_not_null_optimizes_binary_op_with_partial_checks(b AssertSql( """ -SELECT [e].[NullableStringA] + [e].[NullableStringB] + COALESCE([e].[NullableStringC], N'') +SELECT [e].[NullableStringA] + [e].[NullableStringB] + ISNULL([e].[NullableStringC], N'') FROM [Entities1] AS [e] """); } @@ -5173,7 +5173,7 @@ public override async Task Is_not_null_optimizes_binary_op_with_mixed_checks(boo AssertSql( """ SELECT CASE - WHEN [e].[BoolA] = CAST(1 AS bit) THEN [e].[NullableStringA] + COALESCE([e].[NullableStringB], N'') + WHEN [e].[BoolA] = CAST(1 AS bit) THEN [e].[NullableStringA] + ISNULL([e].[NullableStringB], N'') END FROM [Entities1] AS [e] """); @@ -5186,7 +5186,7 @@ public override async Task Sum_function_is_always_considered_non_nullable(bool a AssertSql( """ SELECT [e].[NullableIntA] AS [Key], CASE - WHEN COALESCE(SUM([e].[IntA]), 0) <> [e].[NullableIntA] OR [e].[NullableIntA] IS NULL THEN CAST(1 AS bit) + WHEN ISNULL(SUM([e].[IntA]), 0) <> [e].[NullableIntA] OR [e].[NullableIntA] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [Sum] FROM [Entities1] AS [e] @@ -5202,7 +5202,7 @@ public override async Task Nullability_is_computed_correctly_for_chained_coalesc """ SELECT [e].[Id], [e].[BoolA], [e].[BoolB], [e].[BoolC], [e].[IntA], [e].[IntB], [e].[IntC], [e].[NullableBoolA], [e].[NullableBoolB], [e].[NullableBoolC], [e].[NullableIntA], [e].[NullableIntB], [e].[NullableIntC], [e].[NullableStringA], [e].[NullableStringB], [e].[NullableStringC], [e].[StringA], [e].[StringB], [e].[StringC] FROM [Entities1] AS [e] -WHERE COALESCE([e].[NullableIntA], [e].[NullableIntB], [e].[IntC]) <> [e].[NullableIntC] OR [e].[NullableIntC] IS NULL +WHERE ISNULL(ISNULL([e].[NullableIntA], [e].[NullableIntB]), [e].[IntC]) <> [e].[NullableIntC] OR [e].[NullableIntC] IS NULL """); } @@ -5241,7 +5241,7 @@ public override async Task Coalesce_deeply_nested(bool async) AssertSql( """ -SELECT COALESCE([e].[NullableIntA], [e].[NullableIntB], [e0].[NullableIntC], [e0].[NullableIntB], [e].[NullableIntC], [e0].[NullableIntA]) +SELECT ISNULL(ISNULL(ISNULL(ISNULL(ISNULL([e].[NullableIntA], [e].[NullableIntB]), [e0].[NullableIntC]), [e0].[NullableIntB]), [e].[NullableIntC]), [e0].[NullableIntA]) FROM [Entities1] AS [e] INNER JOIN [Entities2] AS [e0] ON [e].[Id] = [e0].[Id] """); diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/OwnedEntityQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/OwnedEntityQuerySqlServerTest.cs index bdecc53cb7f..7762f33dc06 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/OwnedEntityQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/OwnedEntityQuerySqlServerTest.cs @@ -549,7 +549,7 @@ public override async Task Projecting_owned_collection_and_aggregate(bool async) AssertSql( """ SELECT [b].[Id], ( - SELECT COALESCE(SUM([p].[CommentsCount]), 0) + SELECT ISNULL(SUM([p].[CommentsCount]), 0) FROM [Post] AS [p] WHERE [b].[Id] = [p].[BlogId]), [p0].[Title], [p0].[CommentsCount], [p0].[BlogId], [p0].[Id] FROM [Blog] AS [b] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/OwnedQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/OwnedQuerySqlServerTest.cs index ceb610b0a44..330c37c8b25 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/OwnedQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/OwnedQuerySqlServerTest.cs @@ -1317,7 +1317,7 @@ FROM [OwnedPerson] AS [o2] LEFT JOIN [Planet] AS [p] ON [o1].[PersonAddress_Country_PlanetId] = [p].[Id] LEFT JOIN [Star] AS [s] ON [p].[StarId] = [s].[Id] WHERE [o0].[Key] = [o1].[Key]) AS [p1], ( - SELECT COALESCE(SUM([s0].[Id]), 0) + SELECT ISNULL(SUM([s0].[Id]), 0) FROM ( SELECT 1 AS [Key], [o4].[PersonAddress_Country_PlanetId] FROM [OwnedPerson] AS [o4] @@ -1497,7 +1497,7 @@ public override async Task GroupBy_aggregate_on_owned_navigation_in_aggregate_se AssertSql( """ SELECT [o].[Id] AS [Key], ( - SELECT COALESCE(SUM([o0].[PersonAddress_Country_PlanetId]), 0) + SELECT ISNULL(SUM([o0].[PersonAddress_Country_PlanetId]), 0) FROM [OwnedPerson] AS [o0] WHERE [o].[Id] = [o0].[Id]) AS [Sum] FROM [OwnedPerson] AS [o] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/PrecompiledQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/PrecompiledQuerySqlServerTest.cs index dcda57bca29..69e3b245ec9 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/PrecompiledQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/PrecompiledQuerySqlServerTest.cs @@ -1464,12 +1464,12 @@ public override async Task Terminating_Sum() AssertSql( """ -SELECT COALESCE(SUM([b].[Id]), 0) +SELECT ISNULL(SUM([b].[Id]), 0) FROM [Blogs] AS [b] """, // """ -SELECT COALESCE(SUM([b].[Id]), 0) +SELECT ISNULL(SUM([b].[Id]), 0) FROM [Blogs] AS [b] """); } @@ -1480,12 +1480,12 @@ public override async Task Terminating_SumAsync() AssertSql( """ -SELECT COALESCE(SUM([b].[Id]), 0) +SELECT ISNULL(SUM([b].[Id]), 0) FROM [Blogs] AS [b] """, // """ -SELECT COALESCE(SUM([b].[Id]), 0) +SELECT ISNULL(SUM([b].[Id]), 0) FROM [Blogs] AS [b] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQueryOldSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQueryOldSqlServerTest.cs index 94bb8dc7506..e9565ccebb9 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQueryOldSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQueryOldSqlServerTest.cs @@ -965,13 +965,12 @@ public override async Task Parameter_collection_Count_with_huge_number_of_values { await base.Parameter_collection_Count_with_huge_number_of_values_over_5_operations_same_parameter(); - Assert.Contains("@ids1=", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); - Assert.Contains("@ids2=", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); + Assert.Contains("VALUES (2)", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); } - public override async Task Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping() + public override async Task Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_property() { - await base.Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping(); + await base.Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_property(); Assert.Contains("VALUES (2)", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); } @@ -1011,15 +1010,13 @@ public override async Task Parameter_collection_of_ints_Contains_int_with_huge_n { await base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_5_operations_same_parameter(); - Assert.Contains("@ints1=", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); - Assert.Contains("@ints2=", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); - Assert.Contains("@ints1=", Fixture.TestSqlLoggerFactory.SqlStatements[1], StringComparison.Ordinal); - Assert.Contains("@ints2=", Fixture.TestSqlLoggerFactory.SqlStatements[1], StringComparison.Ordinal); + Assert.DoesNotContain("OPENJSON", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); + Assert.DoesNotContain("OPENJSON", Fixture.TestSqlLoggerFactory.SqlStatements[1], StringComparison.Ordinal); } - public override async Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping() + public override async Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_property() { - await base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping(); + await base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_property(); Assert.DoesNotContain("OPENJSON", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); Assert.DoesNotContain("OPENJSON", Fixture.TestSqlLoggerFactory.SqlStatements[1], StringComparison.Ordinal); diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQuerySqlServerJsonTypeTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQuerySqlServerJsonTypeTest.cs index 0b473c7062b..bb8040b0a87 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQuerySqlServerJsonTypeTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQuerySqlServerJsonTypeTest.cs @@ -123,13 +123,12 @@ public override async Task Parameter_collection_Count_with_huge_number_of_values { await base.Parameter_collection_Count_with_huge_number_of_values_over_5_operations_same_parameter(); - Assert.Contains("@ids1=", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); - Assert.Contains("@ids2=", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); + Assert.Contains("OPENJSON(@ids) WITH ([Value] int '$')", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); } - public override async Task Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping() + public override async Task Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_property() { - await base.Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping(); + await base.Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_property(); Assert.Contains("OPENJSON(@ids) WITH ([Value] int '$')", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); } @@ -186,15 +185,13 @@ public override async Task Parameter_collection_of_ints_Contains_int_with_huge_n { await base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_5_operations_same_parameter(); - Assert.Contains("@ints1=", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); - Assert.Contains("@ints2=", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); - Assert.Contains("@ints1=", Fixture.TestSqlLoggerFactory.SqlStatements[1], StringComparison.Ordinal); - Assert.Contains("@ints2=", Fixture.TestSqlLoggerFactory.SqlStatements[1], StringComparison.Ordinal); + Assert.Contains("OPENJSON(@ints) WITH ([Value] int '$')", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); + Assert.Contains("OPENJSON(@ints) WITH ([Value] int '$')", Fixture.TestSqlLoggerFactory.SqlStatements[1], StringComparison.Ordinal); } - public override async Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping() + public override async Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_property() { - await base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping(); + await base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_property(); Assert.Contains("OPENJSON(@ints) WITH ([Value] int '$')", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); Assert.Contains("OPENJSON(@ints) WITH ([Value] int '$')", Fixture.TestSqlLoggerFactory.SqlStatements[1], StringComparison.Ordinal); @@ -2056,7 +2053,7 @@ public override async Task Column_collection_FirstOrDefault() """ SELECT [p].[Id], [p].[Bool], [p].[Bools], [p].[DateTime], [p].[DateTimes], [p].[Enum], [p].[Enums], [p].[Int], [p].[Ints], [p].[NullableInt], [p].[NullableInts], [p].[NullableString], [p].[NullableStrings], [p].[NullableWrappedId], [p].[NullableWrappedIdWithNullableComparer], [p].[String], [p].[Strings], [p].[WrappedId] FROM [PrimitiveCollectionsEntity] AS [p] -WHERE COALESCE(( +WHERE ISNULL(( SELECT TOP(1) CAST([i].[value] AS int) AS [value] FROM OPENJSON([p].[Ints]) AS [i] ORDER BY CAST([i].[key] AS int)), 0) = 1 @@ -2086,7 +2083,7 @@ public override async Task Column_collection_SingleOrDefault() """ SELECT [p].[Id], [p].[Bool], [p].[Bools], [p].[DateTime], [p].[DateTimes], [p].[Enum], [p].[Enums], [p].[Int], [p].[Ints], [p].[NullableInt], [p].[NullableInts], [p].[NullableString], [p].[NullableStrings], [p].[NullableWrappedId], [p].[NullableWrappedIdWithNullableComparer], [p].[String], [p].[Strings], [p].[WrappedId] FROM [PrimitiveCollectionsEntity] AS [p] -WHERE COALESCE(( +WHERE ISNULL(( SELECT TOP(1) CAST([i].[value] AS int) AS [value] FROM OPENJSON([p].[Ints]) AS [i] ORDER BY CAST([i].[key] AS int)), 0) = 1 diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQuerySqlServerTest.cs index 42347b4e08a..b81b24ccdbb 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/PrimitiveCollectionsQuerySqlServerTest.cs @@ -1235,13 +1235,12 @@ public override async Task Parameter_collection_Count_with_huge_number_of_values { await base.Parameter_collection_Count_with_huge_number_of_values_over_5_operations_same_parameter(); - Assert.Contains("@ids1=", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); - Assert.Contains("@ids2=", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); + Assert.Contains("OPENJSON(@ids) WITH ([Value] int '$')", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); } - public override async Task Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping() + public override async Task Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_property() { - await base.Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping(); + await base.Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_property(); Assert.Contains("OPENJSON(@ids) WITH ([Value] int '$')", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); } @@ -1281,15 +1280,13 @@ public override async Task Parameter_collection_of_ints_Contains_int_with_huge_n { await base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_5_operations_same_parameter(); - Assert.Contains("@ints1=", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); - Assert.Contains("@ints2=", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); - Assert.Contains("@ints1=", Fixture.TestSqlLoggerFactory.SqlStatements[1], StringComparison.Ordinal); - Assert.Contains("@ints2=", Fixture.TestSqlLoggerFactory.SqlStatements[1], StringComparison.Ordinal); + Assert.Contains("OPENJSON(@ints) WITH ([Value] int '$')", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); + Assert.Contains("OPENJSON(@ints) WITH ([Value] int '$')", Fixture.TestSqlLoggerFactory.SqlStatements[1], StringComparison.Ordinal); } - public override async Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping() + public override async Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_property() { - await base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping(); + await base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_property(); Assert.Contains("OPENJSON(@ints) WITH ([Value] int '$')", Fixture.TestSqlLoggerFactory.SqlStatements[0], StringComparison.Ordinal); Assert.Contains("OPENJSON(@ints) WITH ([Value] int '$')", Fixture.TestSqlLoggerFactory.SqlStatements[1], StringComparison.Ordinal); @@ -2425,7 +2422,7 @@ public override async Task Column_collection_FirstOrDefault() """ SELECT [p].[Id], [p].[Bool], [p].[Bools], [p].[DateTime], [p].[DateTimes], [p].[Enum], [p].[Enums], [p].[Int], [p].[Ints], [p].[NullableInt], [p].[NullableInts], [p].[NullableString], [p].[NullableStrings], [p].[NullableWrappedId], [p].[NullableWrappedIdWithNullableComparer], [p].[String], [p].[Strings], [p].[WrappedId] FROM [PrimitiveCollectionsEntity] AS [p] -WHERE COALESCE(( +WHERE ISNULL(( SELECT TOP(1) CAST([i].[value] AS int) AS [value] FROM OPENJSON([p].[Ints]) AS [i] ORDER BY CAST([i].[key] AS int)), 0) = 1 @@ -2455,7 +2452,7 @@ public override async Task Column_collection_SingleOrDefault() """ SELECT [p].[Id], [p].[Bool], [p].[Bools], [p].[DateTime], [p].[DateTimes], [p].[Enum], [p].[Enums], [p].[Int], [p].[Ints], [p].[NullableInt], [p].[NullableInts], [p].[NullableString], [p].[NullableStrings], [p].[NullableWrappedId], [p].[NullableWrappedIdWithNullableComparer], [p].[String], [p].[Strings], [p].[WrappedId] FROM [PrimitiveCollectionsEntity] AS [p] -WHERE COALESCE(( +WHERE ISNULL(( SELECT TOP(1) CAST([i].[value] AS int) AS [value] FROM OPENJSON([p].[Ints]) AS [i] ORDER BY CAST([i].[key] AS int)), 0) = 1 diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs index f39a09707b6..a64e37aa521 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs @@ -432,7 +432,7 @@ public override async Task String_concat_with_null_conditional_argument(bool asy SELECT [w0].[Id], [w0].[AmmunitionType], [w0].[IsAutomatic], [w0].[Name], [w0].[OwnerFullName], [w0].[PeriodEnd], [w0].[PeriodStart], [w0].[SynergyWithId] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] LEFT JOIN [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w0] ON [w].[SynergyWithId] = [w0].[Id] -ORDER BY COALESCE([w0].[Name], N'') + CAST(5 AS nvarchar(max)) +ORDER BY ISNULL([w0].[Name], N'') + CAST(5 AS nvarchar(max)) """); } @@ -504,7 +504,7 @@ public override async Task Select_subquery_int_with_outside_cast_and_coalesce(bo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -1057,7 +1057,7 @@ public override async Task String_concat_with_null_conditional_argument2(bool as SELECT [w0].[Id], [w0].[AmmunitionType], [w0].[IsAutomatic], [w0].[Name], [w0].[OwnerFullName], [w0].[PeriodEnd], [w0].[PeriodStart], [w0].[SynergyWithId] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] LEFT JOIN [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w0] ON [w].[SynergyWithId] = [w0].[Id] -ORDER BY COALESCE([w0].[Name], N'') + N'Marcus'' Lancer' +ORDER BY ISNULL([w0].[Name], N'') + N'Marcus'' Lancer' """); } @@ -1096,7 +1096,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean2(boo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[Name] LIKE N'%Lancer%'), CAST(0 AS bit)) @@ -1363,7 +1363,7 @@ public override async Task Project_one_value_type_from_empty_collection(bool asy AssertSql( """ -SELECT [s].[Name], COALESCE(( +SELECT [s].[Name], ISNULL(( SELECT TOP(1) [g].[SquadId] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] WHERE [s].[Id] = [g].[SquadId] AND [g].[HasSoulPatch] = CAST(1 AS bit)), 0) AS [SquadId] @@ -1596,7 +1596,7 @@ public override async Task Where_subquery_boolean(bool async) """ SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd], [g].[PeriodStart], [g].[Rank] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] -WHERE COALESCE(( +WHERE ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -1743,7 +1743,7 @@ public override async Task DefaultIfEmpty_top_level_over_arbitrary_expression_wi AssertSql( """ -SELECT COALESCE([m0].[c], 0) +SELECT ISNULL([m0].[c], 0) FROM ( SELECT 1 AS empty ) AS [e] @@ -1972,7 +1972,7 @@ public override async Task Select_subquery_int_with_pushdown_and_coalesce(bool a AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -1987,7 +1987,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean_empt AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[Name] = N'BFG'), CAST(0 AS bit)) @@ -2430,7 +2430,7 @@ public override async Task GetValueOrDefault_in_order_by(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[PeriodEnd], [w].[PeriodStart], [w].[SynergyWithId] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] -ORDER BY COALESCE([w].[SynergyWithId], 0), [w].[Id] +ORDER BY ISNULL([w].[SynergyWithId], 0), [w].[Id] """); } @@ -2440,7 +2440,7 @@ public override async Task GroupBy_Property_Include_Select_Sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([g].[SquadId]), 0) +SELECT ISNULL(SUM([g].[SquadId]), 0) FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] GROUP BY [g].[Rank] """); @@ -2885,7 +2885,7 @@ public override async Task GetValueOrDefault_in_projection(bool async) AssertSql( """ -SELECT COALESCE([w].[SynergyWithId], 0) +SELECT ISNULL([w].[SynergyWithId], 0) FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] """); } @@ -2984,7 +2984,7 @@ public override async Task Include_collection_with_complex_OrderBy3(bool async) FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] LEFT JOIN [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g0] ON [g].[Nickname] = [g0].[LeaderNickname] AND [g].[SquadId] = [g0].[LeaderSquadId] WHERE [g].[Discriminator] = N'Officer' -ORDER BY COALESCE(( +ORDER BY ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -3290,7 +3290,7 @@ public override async Task GetValueOrDefault_with_argument_complex(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[PeriodEnd], [w].[PeriodStart], [w].[SynergyWithId] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] -WHERE COALESCE([w].[SynergyWithId], CAST(LEN([w].[Name]) AS int) + 42) > 10 +WHERE ISNULL([w].[SynergyWithId], CAST(LEN([w].[Name]) AS int) + 42) > 10 """); } @@ -3382,7 +3382,7 @@ public override async Task Filter_on_subquery_projecting_one_value_type_from_emp """ SELECT [s].[Name] FROM [Squads] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [s] -WHERE [s].[Name] = N'Kilo' AND COALESCE(( +WHERE [s].[Name] = N'Kilo' AND ISNULL(( SELECT TOP(1) [g].[SquadId] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] WHERE [s].[Id] = [g].[SquadId] AND [g].[HasSoulPatch] = CAST(1 AS bit)), 0) <> 0 @@ -3470,7 +3470,7 @@ public override async Task Select_subquery_boolean_empty(bool async) AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[Name] = N'BFG' @@ -3622,7 +3622,7 @@ public override async Task Optional_Navigation_Null_Coalesce_To_Clr_Type(bool as AssertSql( """ -SELECT TOP(1) COALESCE([w0].[IsAutomatic], CAST(0 AS bit)) AS [IsAutomatic] +SELECT TOP(1) ISNULL([w0].[IsAutomatic], CAST(0 AS bit)) AS [IsAutomatic] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] LEFT JOIN [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w0] ON [w].[SynergyWithId] = [w0].[Id] ORDER BY [w].[Id] @@ -3706,7 +3706,7 @@ public override async Task Select_subquery_int_with_inside_cast_and_coalesce(boo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -3893,7 +3893,7 @@ public override async Task Negated_bool_ternary_inside_anonymous_type_in_project """ SELECT ~CASE WHEN [g].[HasSoulPatch] = CAST(1 AS bit) THEN CAST(1 AS bit) - ELSE COALESCE([g].[HasSoulPatch], CAST(1 AS bit)) + ELSE ISNULL([g].[HasSoulPatch], CAST(1 AS bit)) END AS [c] FROM [Tags] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [t] LEFT JOIN [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] ON [t].[GearNickName] = [g].[Nickname] AND [t].[GearSquadId] = [g].[SquadId] @@ -4146,7 +4146,7 @@ public override async Task Where_subquery_distinct_firstordefault_boolean(bool a """ SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd], [g].[PeriodStart], [g].[Rank] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] -WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[PeriodEnd], [w].[PeriodStart], [w].[SynergyWithId] @@ -4508,7 +4508,7 @@ public override async Task Coalesce_operator_in_predicate_with_other_conditions( SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[IssueDate], [t].[Note], [t].[PeriodEnd], [t].[PeriodStart] FROM [Tags] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [t] LEFT JOIN [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] ON [t].[GearNickName] = [g].[Nickname] AND [t].[GearSquadId] = [g].[SquadId] -WHERE ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND COALESCE([g].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) +WHERE ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND ISNULL([g].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) """); } @@ -4705,7 +4705,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean1(boo AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[PeriodEnd], [w].[PeriodStart], [w].[SynergyWithId] @@ -4986,7 +4986,7 @@ public override async Task Sum_with_optional_navigation_is_translated_to_sql(boo AssertSql( """ -SELECT COALESCE(SUM([g].[SquadId]), 0) +SELECT ISNULL(SUM([g].[SquadId]), 0) FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] LEFT JOIN [Tags] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [t] ON [g].[Nickname] = [t].[GearNickName] AND [g].[SquadId] = [t].[GearSquadId] WHERE [t].[Note] <> N'Foo' OR [t].[Note] IS NULL @@ -5187,7 +5187,7 @@ public override async Task GetValueOrDefault_in_filter(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[PeriodEnd], [w].[PeriodStart], [w].[SynergyWithId] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] -WHERE COALESCE([w].[SynergyWithId], 0) = 0 +WHERE ISNULL([w].[SynergyWithId], 0) = 0 """); } @@ -5290,7 +5290,7 @@ public override async Task Where_subquery_distinct_singleordefault_boolean1(bool """ SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd], [g].[PeriodStart], [g].[Rank] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] -WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[PeriodEnd], [w].[PeriodStart], [w].[SynergyWithId] @@ -5500,14 +5500,14 @@ public override async Task FirstOrDefault_on_empty_collection_of_DateTime_in_sub AssertSql( """ -SELECT [g].[Nickname], COALESCE(( +SELECT [g].[Nickname], ISNULL(( SELECT TOP(1) [t1].[IssueDate] FROM [Tags] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [t1] WHERE [t1].[GearNickName] = [g].[FullName] ORDER BY [t1].[Id]), '0001-01-01T00:00:00.0000000') AS [invalidTagIssueDate] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] LEFT JOIN [Tags] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [t] ON [g].[Nickname] = [t].[GearNickName] AND [g].[SquadId] = [t].[GearSquadId] -WHERE [t].[IssueDate] > COALESCE(( +WHERE [t].[IssueDate] > ISNULL(( SELECT TOP(1) [t0].[IssueDate] FROM [Tags] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [t0] WHERE [t0].[GearNickName] = [g].[FullName] @@ -5524,7 +5524,7 @@ public override async Task Coalesce_operator_in_predicate(bool async) SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[IssueDate], [t].[Note], [t].[PeriodEnd], [t].[PeriodStart] FROM [Tags] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [t] LEFT JOIN [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] ON [t].[GearNickName] = [g].[Nickname] AND [t].[GearSquadId] = [g].[SquadId] -WHERE COALESCE([g].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) +WHERE ISNULL([g].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) """); } @@ -5812,7 +5812,7 @@ public override async Task Where_subquery_distinct_singleordefault_boolean2(bool """ SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd], [g].[PeriodStart], [g].[Rank] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] -WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[Name] LIKE N'%Lancer%'), CAST(0 AS bit)) = CAST(1 AS bit) @@ -5887,7 +5887,7 @@ public override async Task Where_subquery_distinct_orderby_firstordefault_boolea """ SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd], [g].[PeriodStart], [g].[Rank] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] -WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND COALESCE(( +WHERE [g].[HasSoulPatch] = CAST(1 AS bit) AND ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[PeriodEnd], [w].[PeriodStart], [w].[SynergyWithId] @@ -6275,7 +6275,7 @@ public override async Task Select_subquery_boolean(bool async) AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[IsAutomatic] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -6354,7 +6354,7 @@ public override async Task Select_subquery_int_with_pushdown_and_coalesce2(bool AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w].[Id] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] WHERE [g].[FullName] = [w].[OwnerFullName] @@ -6691,7 +6691,7 @@ public override async Task Select_subquery_distinct_singleordefault_boolean_empt AssertSql( """ -SELECT COALESCE(( +SELECT ISNULL(( SELECT TOP(1) [w0].[IsAutomatic] FROM ( SELECT DISTINCT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[PeriodEnd], [w].[PeriodStart], [w].[SynergyWithId] @@ -7581,7 +7581,7 @@ public override async Task Coalesce_operator_in_projection_with_other_conditions AssertSql( """ SELECT CASE - WHEN ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND COALESCE([g].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) THEN CAST(1 AS bit) + WHEN ([t].[Note] <> N'K.I.A.' OR [t].[Note] IS NULL) AND ISNULL([g].[HasSoulPatch], CAST(0 AS bit)) = CAST(1 AS bit) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END FROM [Tags] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [t] @@ -7695,7 +7695,7 @@ public override async Task GetValueOrDefault_with_argument(bool async) """ SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[PeriodEnd], [w].[PeriodStart], [w].[SynergyWithId] FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] -WHERE COALESCE([w].[SynergyWithId], [w].[Id]) = 1 +WHERE ISNULL([w].[SynergyWithId], [w].[Id]) = 1 """); } @@ -8315,7 +8315,7 @@ LEFT JOIN ( ORDER BY ( SELECT COUNT(*) FROM [Weapons] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [w] - WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[IsAutomatic] = COALESCE(( + WHERE [g].[FullName] = [w].[OwnerFullName] AND [w].[IsAutomatic] = ISNULL(( SELECT TOP(1) [g0].[HasSoulPatch] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g0] WHERE [g0].[Nickname] = N'Marcus'), CAST(0 AS bit))), [g].[Nickname], [g].[SquadId], [g2].[Nickname] @@ -8489,7 +8489,7 @@ public override async Task FirstOrDefault_over_int_compared_to_zero(bool async) """ SELECT [s].[Name] FROM [Squads] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [s] -WHERE [s].[Name] = N'Delta' AND COALESCE(( +WHERE [s].[Name] = N'Delta' AND ISNULL(( SELECT TOP(1) [g].[SquadId] FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] WHERE [s].[Id] = [g].[SquadId] AND [g].[HasSoulPatch] = CAST(1 AS bit) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalManyToManyQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalManyToManyQuerySqlServerTest.cs index 92acdf2088b..b1dd54be848 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalManyToManyQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalManyToManyQuerySqlServerTest.cs @@ -232,7 +232,7 @@ public override async Task Skip_navigation_select_many_sum(bool async) AssertSql( """ -SELECT COALESCE(SUM([s].[Key1]), 0) +SELECT ISNULL(SUM([s].[Key1]), 0) FROM [EntityRoots] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [e] INNER JOIN ( SELECT [e1].[Key1], [e0].[RootSkipSharedId] @@ -295,7 +295,7 @@ public override async Task Skip_navigation_select_subquery_sum(bool async) AssertSql( """ SELECT ( - SELECT COALESCE(SUM([e1].[Id]), 0) + SELECT ISNULL(SUM([e1].[Id]), 0) FROM [EntityOneEntityTwo] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [e0] INNER JOIN [EntityOnes] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [e1] ON [e0].[OneSkipSharedId] = [e1].[Id] WHERE [e].[Id] = [e0].[TwoSkipSharedId]) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalOwnedQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalOwnedQuerySqlServerTest.cs index 4ec8ae98396..6ce78119124 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalOwnedQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalOwnedQuerySqlServerTest.cs @@ -1293,7 +1293,7 @@ SELECT AVG(CAST([s].[Id] AS float)) LEFT JOIN [Planet] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [p] ON [o1].[PersonAddress_Country_PlanetId] = [p].[Id] LEFT JOIN [Star] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [s] ON [p].[StarId] = [s].[Id] WHERE [o0].[Key] = [o1].[Key]) AS [p1], ( - SELECT COALESCE(SUM([s0].[Id]), 0) + SELECT ISNULL(SUM([s0].[Id]), 0) FROM ( SELECT 1 AS [Key], [o4].[PersonAddress_Country_PlanetId] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o4] @@ -1467,7 +1467,7 @@ public override async Task GroupBy_aggregate_on_owned_navigation_in_aggregate_se AssertSql( """ SELECT [o].[Id] AS [Key], ( - SELECT COALESCE(SUM([o0].[PersonAddress_Country_PlanetId]), 0) + SELECT ISNULL(SUM([o0].[PersonAddress_Country_PlanetId]), 0) FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o0] WHERE [o].[Id] = [o0].[Id]) AS [Sum] FROM [OwnedPerson] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [o] diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Translations/Operators/MiscellaneousOperatorTranslationsSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Translations/Operators/MiscellaneousOperatorTranslationsSqlServerTest.cs index 09e8cb215ea..ed67ef2f9f5 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Translations/Operators/MiscellaneousOperatorTranslationsSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Translations/Operators/MiscellaneousOperatorTranslationsSqlServerTest.cs @@ -119,7 +119,7 @@ public override async Task Coalesce() """ SELECT [n].[Id], [n].[Bool], [n].[Byte], [n].[ByteArray], [n].[DateOnly], [n].[DateTime], [n].[DateTimeOffset], [n].[Decimal], [n].[Double], [n].[Enum], [n].[FlagsEnum], [n].[Float], [n].[Guid], [n].[Int], [n].[Long], [n].[Short], [n].[String], [n].[TimeOnly], [n].[TimeSpan] FROM [NullableBasicTypesEntities] AS [n] -WHERE COALESCE([n].[String], N'Unknown') = N'Seattle' +WHERE ISNULL([n].[String], N'Unknown') = N'Seattle' """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/Translations/StringTranslationsSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/Translations/StringTranslationsSqlServerTest.cs index b26a7f53bce..f39ca3b6936 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/Translations/StringTranslationsSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/Translations/StringTranslationsSqlServerTest.cs @@ -1431,7 +1431,7 @@ public override async Task Join_over_non_nullable_column() AssertSql( """ -SELECT [b].[Int] AS [Key], COALESCE(STRING_AGG([b].[String], N'|'), N'') AS [Strings] +SELECT [b].[Int] AS [Key], ISNULL(STRING_AGG([b].[String], N'|'), N'') AS [Strings] FROM [BasicTypesEntities] AS [b] GROUP BY [b].[Int] """); @@ -1452,9 +1452,9 @@ public override async Task Join_over_nullable_column() AssertSql( """ -SELECT [n0].[Key], COALESCE(STRING_AGG(COALESCE([n0].[String], N''), N'|'), N'') AS [Regions] +SELECT [n0].[Key], ISNULL(STRING_AGG(ISNULL([n0].[String], N''), N'|'), N'') AS [Regions] FROM ( - SELECT [n].[String], COALESCE([n].[Int], 0) AS [Key] + SELECT [n].[String], ISNULL([n].[Int], 0) AS [Key] FROM [NullableBasicTypesEntities] AS [n] ) AS [n0] GROUP BY [n0].[Key] @@ -1476,7 +1476,7 @@ public override async Task Join_with_predicate() AssertSql( """ -SELECT [b].[Int] AS [Key], COALESCE(STRING_AGG(CASE +SELECT [b].[Int] AS [Key], ISNULL(STRING_AGG(CASE WHEN CAST(LEN([b].[String]) AS int) > 6 THEN [b].[String] END, N'|'), N'') AS [Strings] FROM [BasicTypesEntities] AS [b] @@ -1499,7 +1499,7 @@ public override async Task Join_with_ordering() AssertSql( """ -SELECT [b].[Int] AS [Key], COALESCE(STRING_AGG([b].[String], N'|') WITHIN GROUP (ORDER BY [b].[Id] DESC), N'') AS [Strings] +SELECT [b].[Int] AS [Key], ISNULL(STRING_AGG([b].[String], N'|') WITHIN GROUP (ORDER BY [b].[Id] DESC), N'') AS [Strings] FROM [BasicTypesEntities] AS [b] GROUP BY [b].[Int] """); @@ -1559,7 +1559,7 @@ public override async Task Concat_aggregate() AssertSql( """ -SELECT [b].[Int] AS [Key], COALESCE(STRING_AGG([b].[String], N''), N'') AS [BasicTypesEntitys] +SELECT [b].[Int] AS [Key], ISNULL(STRING_AGG([b].[String], N''), N'') AS [BasicTypesEntitys] FROM [BasicTypesEntities] AS [b] GROUP BY [b].[Int] """); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs index 9f2cdf1da13..65e3f8385e1 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs @@ -166,24 +166,6 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(enumDiscriminatorColumn, dependentDerived.FindProperty("EnumDiscriminator")!, dependentBasebyteTableMapping0); RelationalModel.CreateColumnMapping(idColumn, dependentDerived.FindProperty("Id")!, dependentBasebyteTableMapping0); RelationalModel.CreateColumnMapping(moneyColumn, dependentDerived.FindProperty("Money")!, dependentBasebyteTableMapping0); - var pK_DependentBasebyte = new UniqueConstraint("PK_DependentBase", dependentBasebyteTable, new[] { principalIdColumn, principalAlternateIdColumn }); - dependentBasebyteTable.PrimaryKey = pK_DependentBasebyte; - pK_DependentBasebyte.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_DependentBasebyte)); - var pK_DependentBasebyteKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+DependentBase", - new[] { "PrincipalId", "PrincipalAlternateId" }); - pK_DependentBasebyte.MappedKeys.Add(pK_DependentBasebyteKey); - RelationalModel.GetOrCreateUniqueConstraints(pK_DependentBasebyteKey).Add(pK_DependentBasebyte); - dependentBasebyteTable.UniqueConstraints.Add("PK_DependentBase", pK_DependentBasebyte); - var iX_DependentBasebyte_PrincipalId = new TableIndex( - "IX_DependentBase_PrincipalId", dependentBasebyteTable, new[] { principalIdColumn }, true); - iX_DependentBasebyte_PrincipalId.SetRowIndexValueFactory(new SimpleRowIndexValueFactory(iX_DependentBasebyte_PrincipalId)); - var iX_DependentBasebyte_PrincipalIdIx = RelationalModel.GetIndex(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+DependentBase", - new[] { "PrincipalId" }); - iX_DependentBasebyte_PrincipalId.MappedIndexes.Add(iX_DependentBasebyte_PrincipalIdIx); - RelationalModel.GetOrCreateTableIndexes(iX_DependentBasebyte_PrincipalIdIx).Add(iX_DependentBasebyte_PrincipalId); - dependentBasebyteTable.Indexes.Add("IX_DependentBase_PrincipalId", iX_DependentBasebyte_PrincipalId); var manyTypes = FindEntityType("Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes")!; @@ -3275,15 +3257,6 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateJsonElementMapping(manyTypes.FindProperty("UInt64Array")!, arrayJsonArray224, manyTypesTableMapping); RelationalModel.CreateJsonElementMapping(manyTypes.FindProperty("UInt8ReadOnlyCollection")!, arrayJsonArray225, manyTypesTableMapping); RelationalModel.CreateJsonElementMapping(manyTypes.FindProperty("UriArray")!, arrayJsonArray226, manyTypesTableMapping); - var pK_ManyTypes = new UniqueConstraint("PK_ManyTypes", manyTypesTable, new[] { idColumn0 }); - manyTypesTable.PrimaryKey = pK_ManyTypes; - pK_ManyTypes.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(pK_ManyTypes)); - var pK_ManyTypesKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes", - new[] { "Id" }); - pK_ManyTypes.MappedKeys.Add(pK_ManyTypesKey); - RelationalModel.GetOrCreateUniqueConstraints(pK_ManyTypesKey).Add(pK_ManyTypes); - manyTypesTable.UniqueConstraints.Add("PK_ManyTypes", pK_ManyTypes); var principalBase = FindEntityType("Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase")!; @@ -3716,15 +3689,6 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(principalBaseAlternateIdColumn, ownedType.FindProperty("PrincipalBaseAlternateId")!, detailsTableMapping); RelationalModel.CreateColumnMapping(principalBaseIdColumn, ownedType.FindProperty("PrincipalBaseId")!, detailsTableMapping); RelationalModel.CreateColumnMapping(detailsColumn, ownedType.FindProperty("Details")!, detailsTableMapping); - var pK_Details = new UniqueConstraint("PK_Details", detailsTable, new[] { principalBaseIdColumn, principalBaseAlternateIdColumn }); - detailsTable.PrimaryKey = pK_Details; - pK_Details.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_Details)); - var pK_DetailsKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase.Owned#OwnedType", - new[] { "PrincipalBaseId", "PrincipalBaseAlternateId" }); - pK_Details.MappedKeys.Add(pK_DetailsKey); - RelationalModel.GetOrCreateUniqueConstraints(pK_DetailsKey).Add(pK_Details); - detailsTable.UniqueConstraints.Add("PK_Details", pK_Details); var principalDerived = FindEntityType("Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalDerived>")!; @@ -3781,34 +3745,6 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(valueTypeEnumerableColumn, principalDerived.FindProperty("ValueTypeEnumerable")!, principalBaseTableMapping1); RelationalModel.CreateColumnMapping(valueTypeIListColumn, principalDerived.FindProperty("ValueTypeIList")!, principalBaseTableMapping1); RelationalModel.CreateColumnMapping(valueTypeListColumn, principalDerived.FindProperty("ValueTypeList")!, principalBaseTableMapping1); - var aK_PrincipalBase_Id = new UniqueConstraint("AK_PrincipalBase_Id", principalBaseTable, new[] { idColumn1 }); - aK_PrincipalBase_Id.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(aK_PrincipalBase_Id)); - var aK_PrincipalBase_IdKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase", - new[] { "Id" }); - aK_PrincipalBase_Id.MappedKeys.Add(aK_PrincipalBase_IdKey); - RelationalModel.GetOrCreateUniqueConstraints(aK_PrincipalBase_IdKey).Add(aK_PrincipalBase_Id); - principalBaseTable.UniqueConstraints.Add("AK_PrincipalBase_Id", aK_PrincipalBase_Id); - var pK = new UniqueConstraint("PK", principalBaseTable, new[] { idColumn1, alternateIdColumn }); - principalBaseTable.PrimaryKey = pK; - pK.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK)); - var pKKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase", - new[] { "Id", "AlternateId" }); - pK.MappedKeys.Add(pKKey); - RelationalModel.GetOrCreateUniqueConstraints(pKKey).Add(pK); - pK.MappedKeys.Add(pK_DetailsKey); - RelationalModel.GetOrCreateUniqueConstraints(pK_DetailsKey).Add(pK); - principalBaseTable.UniqueConstraints.Add("PK", pK); - var iX_PrincipalBase_AlternateId_Id = new TableIndex( - "IX_PrincipalBase_AlternateId_Id", principalBaseTable, new[] { alternateIdColumn, idColumn1 }, false); - iX_PrincipalBase_AlternateId_Id.SetRowIndexValueFactory(new CompositeRowIndexValueFactory(iX_PrincipalBase_AlternateId_Id)); - var iX_PrincipalBase_AlternateId_IdIx = RelationalModel.GetIndex(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase", - new[] { "AlternateId", "Id" }); - iX_PrincipalBase_AlternateId_Id.MappedIndexes.Add(iX_PrincipalBase_AlternateId_IdIx); - RelationalModel.GetOrCreateTableIndexes(iX_PrincipalBase_AlternateId_IdIx).Add(iX_PrincipalBase_AlternateId_Id); - principalBaseTable.Indexes.Add("IX_PrincipalBase_AlternateId_Id", iX_PrincipalBase_AlternateId_Id); var principalDerivedTable = new Table("PrincipalDerived", null, relationalModel); var derivedIdColumn = new Column("DerivedId", "bigint", principalDerivedTable); principalDerivedTable.Columns.Add("DerivedId", derivedIdColumn); @@ -3822,23 +3758,6 @@ private IRelationalModel CreateRelationalModel() tableMappings4.Add(principalDerivedTableMapping); RelationalModel.CreateColumnMapping(alternateIdColumn0, principalDerived.FindProperty("AlternateId")!, principalDerivedTableMapping); RelationalModel.CreateColumnMapping(derivedIdColumn, principalDerived.FindProperty("Id")!, principalDerivedTableMapping); - var aK_PrincipalDerived_DerivedId = new UniqueConstraint("AK_PrincipalDerived_DerivedId", principalDerivedTable, new[] { derivedIdColumn }); - aK_PrincipalDerived_DerivedId.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(aK_PrincipalDerived_DerivedId)); - aK_PrincipalDerived_DerivedId.MappedKeys.Add(aK_PrincipalBase_IdKey); - RelationalModel.GetOrCreateUniqueConstraints(aK_PrincipalBase_IdKey).Add(aK_PrincipalDerived_DerivedId); - principalDerivedTable.UniqueConstraints.Add("AK_PrincipalDerived_DerivedId", aK_PrincipalDerived_DerivedId); - var pK0 = new UniqueConstraint("PK", principalDerivedTable, new[] { derivedIdColumn, alternateIdColumn0 }); - principalDerivedTable.PrimaryKey = pK0; - pK0.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK0)); - pK0.MappedKeys.Add(pKKey); - RelationalModel.GetOrCreateUniqueConstraints(pKKey).Add(pK0); - principalDerivedTable.UniqueConstraints.Add("PK", pK0); - var iX_PrincipalDerived_AlternateId_DerivedId = new TableIndex( - "IX_PrincipalDerived_AlternateId_DerivedId", principalDerivedTable, new[] { alternateIdColumn0, derivedIdColumn }, false); - iX_PrincipalDerived_AlternateId_DerivedId.SetRowIndexValueFactory(new CompositeRowIndexValueFactory(iX_PrincipalDerived_AlternateId_DerivedId)); - iX_PrincipalDerived_AlternateId_DerivedId.MappedIndexes.Add(iX_PrincipalBase_AlternateId_IdIx); - RelationalModel.GetOrCreateTableIndexes(iX_PrincipalBase_AlternateId_IdIx).Add(iX_PrincipalDerived_AlternateId_DerivedId); - principalDerivedTable.Indexes.Add("IX_PrincipalDerived_AlternateId_DerivedId", iX_PrincipalDerived_AlternateId_DerivedId); var ownedType0 = FindEntityType("Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalDerived>.ManyOwned#OwnedType")!; @@ -4082,15 +4001,6 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateJsonElementMapping(ownedType0.FindProperty("ValueTypeEnumerable")!, arrayJsonArray264, manyOwnedTableMapping); RelationalModel.CreateJsonElementMapping(ownedType0.FindProperty("ValueTypeIList")!, arrayJsonArray265, manyOwnedTableMapping); RelationalModel.CreateJsonElementMapping(ownedType0.FindProperty("ValueTypeList")!, arrayJsonArray266, manyOwnedTableMapping); - var pK_ManyOwned = new UniqueConstraint("PK_ManyOwned", manyOwnedTable, new[] { principalDerivedDependentBasebyteIdColumn, principalDerivedDependentBasebyteAlternateIdColumn, idColumn2 }); - manyOwnedTable.PrimaryKey = pK_ManyOwned; - pK_ManyOwned.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_ManyOwned)); - var pK_ManyOwnedKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalDerived>.ManyOwned#OwnedType", - new[] { "PrincipalDerivedId", "PrincipalDerivedAlternateId", "Id" }); - pK_ManyOwned.MappedKeys.Add(pK_ManyOwnedKey); - RelationalModel.GetOrCreateUniqueConstraints(pK_ManyOwnedKey).Add(pK_ManyOwned); - manyOwnedTable.UniqueConstraints.Add("PK_ManyOwned", pK_ManyOwned); var principalBasePrincipalDerivedDependentBasebyte = FindEntityType("PrincipalBasePrincipalDerived>")!; @@ -4150,6 +4060,79 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(principalsAlternateIdColumn, principalBasePrincipalDerivedDependentBasebyte.FindProperty("PrincipalsAlternateId")!, principalBasePrincipalDerivedDependentBasebyteTableMapping); RelationalModel.CreateColumnMapping(principalsIdColumn, principalBasePrincipalDerivedDependentBasebyte.FindProperty("PrincipalsId")!, principalBasePrincipalDerivedDependentBasebyteTableMapping); RelationalModel.CreateColumnMapping(rowidColumn, principalBasePrincipalDerivedDependentBasebyte.FindProperty("rowid")!, principalBasePrincipalDerivedDependentBasebyteTableMapping); + var pK_DependentBasebyte = new UniqueConstraint("PK_DependentBase", dependentBasebyteTable, new[] { principalIdColumn, principalAlternateIdColumn }); + dependentBasebyteTable.PrimaryKey = pK_DependentBasebyte; + pK_DependentBasebyte.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_DependentBasebyte)); + var pK_DependentBasebyteKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+DependentBase", + new[] { "PrincipalId", "PrincipalAlternateId" }); + pK_DependentBasebyte.MappedKeys.Add(pK_DependentBasebyteKey); + RelationalModel.GetOrCreateUniqueConstraints(pK_DependentBasebyteKey).Add(pK_DependentBasebyte); + dependentBasebyteTable.UniqueConstraints.Add("PK_DependentBase", pK_DependentBasebyte); + var iX_DependentBasebyte_PrincipalId = new TableIndex( + "IX_DependentBase_PrincipalId", dependentBasebyteTable, new[] { principalIdColumn }, true); + iX_DependentBasebyte_PrincipalId.SetRowIndexValueFactory(new SimpleRowIndexValueFactory(iX_DependentBasebyte_PrincipalId)); + var iX_DependentBasebyte_PrincipalIdIx = RelationalModel.GetIndex(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+DependentBase", + new[] { "PrincipalId" }); + iX_DependentBasebyte_PrincipalId.MappedIndexes.Add(iX_DependentBasebyte_PrincipalIdIx); + RelationalModel.GetOrCreateTableIndexes(iX_DependentBasebyte_PrincipalIdIx).Add(iX_DependentBasebyte_PrincipalId); + dependentBasebyteTable.Indexes.Add("IX_DependentBase_PrincipalId", iX_DependentBasebyte_PrincipalId); + var pK_Details = new UniqueConstraint("PK_Details", detailsTable, new[] { principalBaseIdColumn, principalBaseAlternateIdColumn }); + detailsTable.PrimaryKey = pK_Details; + pK_Details.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_Details)); + var pK_DetailsKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase.Owned#OwnedType", + new[] { "PrincipalBaseId", "PrincipalBaseAlternateId" }); + pK_Details.MappedKeys.Add(pK_DetailsKey); + RelationalModel.GetOrCreateUniqueConstraints(pK_DetailsKey).Add(pK_Details); + detailsTable.UniqueConstraints.Add("PK_Details", pK_Details); + var pK_ManyOwned = new UniqueConstraint("PK_ManyOwned", manyOwnedTable, new[] { principalDerivedDependentBasebyteIdColumn, principalDerivedDependentBasebyteAlternateIdColumn, idColumn2 }); + manyOwnedTable.PrimaryKey = pK_ManyOwned; + pK_ManyOwned.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_ManyOwned)); + var pK_ManyOwnedKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalDerived>.ManyOwned#OwnedType", + new[] { "PrincipalDerivedId", "PrincipalDerivedAlternateId", "Id" }); + pK_ManyOwned.MappedKeys.Add(pK_ManyOwnedKey); + RelationalModel.GetOrCreateUniqueConstraints(pK_ManyOwnedKey).Add(pK_ManyOwned); + manyOwnedTable.UniqueConstraints.Add("PK_ManyOwned", pK_ManyOwned); + var pK_ManyTypes = new UniqueConstraint("PK_ManyTypes", manyTypesTable, new[] { idColumn0 }); + manyTypesTable.PrimaryKey = pK_ManyTypes; + pK_ManyTypes.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(pK_ManyTypes)); + var pK_ManyTypesKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes", + new[] { "Id" }); + pK_ManyTypes.MappedKeys.Add(pK_ManyTypesKey); + RelationalModel.GetOrCreateUniqueConstraints(pK_ManyTypesKey).Add(pK_ManyTypes); + manyTypesTable.UniqueConstraints.Add("PK_ManyTypes", pK_ManyTypes); + var aK_PrincipalBase_Id = new UniqueConstraint("AK_PrincipalBase_Id", principalBaseTable, new[] { idColumn1 }); + aK_PrincipalBase_Id.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(aK_PrincipalBase_Id)); + var aK_PrincipalBase_IdKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase", + new[] { "Id" }); + aK_PrincipalBase_Id.MappedKeys.Add(aK_PrincipalBase_IdKey); + RelationalModel.GetOrCreateUniqueConstraints(aK_PrincipalBase_IdKey).Add(aK_PrincipalBase_Id); + principalBaseTable.UniqueConstraints.Add("AK_PrincipalBase_Id", aK_PrincipalBase_Id); + var pK = new UniqueConstraint("PK", principalBaseTable, new[] { idColumn1, alternateIdColumn }); + principalBaseTable.PrimaryKey = pK; + pK.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK)); + var pKKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase", + new[] { "Id", "AlternateId" }); + pK.MappedKeys.Add(pKKey); + RelationalModel.GetOrCreateUniqueConstraints(pKKey).Add(pK); + pK.MappedKeys.Add(pK_DetailsKey); + RelationalModel.GetOrCreateUniqueConstraints(pK_DetailsKey).Add(pK); + principalBaseTable.UniqueConstraints.Add("PK", pK); + var iX_PrincipalBase_AlternateId_Id = new TableIndex( + "IX_PrincipalBase_AlternateId_Id", principalBaseTable, new[] { alternateIdColumn, idColumn1 }, false); + iX_PrincipalBase_AlternateId_Id.SetRowIndexValueFactory(new CompositeRowIndexValueFactory(iX_PrincipalBase_AlternateId_Id)); + var iX_PrincipalBase_AlternateId_IdIx = RelationalModel.GetIndex(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase", + new[] { "AlternateId", "Id" }); + iX_PrincipalBase_AlternateId_Id.MappedIndexes.Add(iX_PrincipalBase_AlternateId_IdIx); + RelationalModel.GetOrCreateTableIndexes(iX_PrincipalBase_AlternateId_IdIx).Add(iX_PrincipalBase_AlternateId_Id); + principalBaseTable.Indexes.Add("IX_PrincipalBase_AlternateId_Id", iX_PrincipalBase_AlternateId_Id); var pK_PrincipalBasePrincipalDerivedDependentBasebyte = new UniqueConstraint("PK_PrincipalBasePrincipalDerived>", principalBasePrincipalDerivedDependentBasebyteTable, new[] { derivedsIdColumn, derivedsAlternateIdColumn, principalsIdColumn, principalsAlternateIdColumn }); principalBasePrincipalDerivedDependentBasebyteTable.PrimaryKey = pK_PrincipalBasePrincipalDerivedDependentBasebyte; pK_PrincipalBasePrincipalDerivedDependentBasebyte.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_PrincipalBasePrincipalDerivedDependentBasebyte)); @@ -4168,6 +4151,23 @@ private IRelationalModel CreateRelationalModel() iX_PrincipalBasePrincipalDerivedDependentBasebyte_PrincipalsId_PrincipalsAlternateId.MappedIndexes.Add(iX_PrincipalBasePrincipalDerivedDependentBasebyte_PrincipalsId_PrincipalsAlternateIdIx); RelationalModel.GetOrCreateTableIndexes(iX_PrincipalBasePrincipalDerivedDependentBasebyte_PrincipalsId_PrincipalsAlternateIdIx).Add(iX_PrincipalBasePrincipalDerivedDependentBasebyte_PrincipalsId_PrincipalsAlternateId); principalBasePrincipalDerivedDependentBasebyteTable.Indexes.Add("IX_PrincipalBasePrincipalDerived>_PrincipalsId_PrincipalsAlternateId", iX_PrincipalBasePrincipalDerivedDependentBasebyte_PrincipalsId_PrincipalsAlternateId); + var aK_PrincipalDerived_DerivedId = new UniqueConstraint("AK_PrincipalDerived_DerivedId", principalDerivedTable, new[] { derivedIdColumn }); + aK_PrincipalDerived_DerivedId.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(aK_PrincipalDerived_DerivedId)); + aK_PrincipalDerived_DerivedId.MappedKeys.Add(aK_PrincipalBase_IdKey); + RelationalModel.GetOrCreateUniqueConstraints(aK_PrincipalBase_IdKey).Add(aK_PrincipalDerived_DerivedId); + principalDerivedTable.UniqueConstraints.Add("AK_PrincipalDerived_DerivedId", aK_PrincipalDerived_DerivedId); + var pK0 = new UniqueConstraint("PK", principalDerivedTable, new[] { derivedIdColumn, alternateIdColumn0 }); + principalDerivedTable.PrimaryKey = pK0; + pK0.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK0)); + pK0.MappedKeys.Add(pKKey); + RelationalModel.GetOrCreateUniqueConstraints(pKKey).Add(pK0); + principalDerivedTable.UniqueConstraints.Add("PK", pK0); + var iX_PrincipalDerived_AlternateId_DerivedId = new TableIndex( + "IX_PrincipalDerived_AlternateId_DerivedId", principalDerivedTable, new[] { alternateIdColumn0, derivedIdColumn }, false); + iX_PrincipalDerived_AlternateId_DerivedId.SetRowIndexValueFactory(new CompositeRowIndexValueFactory(iX_PrincipalDerived_AlternateId_DerivedId)); + iX_PrincipalDerived_AlternateId_DerivedId.MappedIndexes.Add(iX_PrincipalBase_AlternateId_IdIx); + RelationalModel.GetOrCreateTableIndexes(iX_PrincipalBase_AlternateId_IdIx).Add(iX_PrincipalDerived_AlternateId_DerivedId); + principalDerivedTable.Indexes.Add("IX_PrincipalDerived_AlternateId_DerivedId", iX_PrincipalDerived_AlternateId_DerivedId); var fK_DependentBasebyte_PrincipalBase_PrincipalId = new ForeignKeyConstraint( "FK_DependentBase_PrincipalBase_PrincipalId", dependentBasebyteTable, principalBaseTable, new[] { principalIdColumn }, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs index faa6ac3427d..97f73875c17 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs @@ -30,7 +30,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas typeof(CompiledModelTestBase.DependentBase), baseEntityType, discriminatorProperty: "EnumDiscriminator", - discriminatorValue: CompiledModelTestBase.Enum1.One, derivedTypesCount: 1, propertyCount: 4, navigationCount: 1, @@ -38,6 +37,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas unnamedIndexCount: 1, keyCount: 1); + runtimeEntityType.SetDiscriminatorValueFromProviderValue(1); + var principalId = runtimeEntityType.AddProperty( "PrincipalId", typeof(long), @@ -54,19 +55,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - principalId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + principalId.TypeMapping = SqlServerLongTypeMapping.Default; principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); principalId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -87,18 +76,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 1, storeGenerationIndex: 1); principalAlternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); @@ -121,22 +98,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumDiscriminator.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum1 value) => ((int)value), CompiledModelTestBase.Enum1 (int value) => ((CompiledModelTestBase.Enum1)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum1 value) => ((int)value), CompiledModelTestBase.Enum1 (int value) => ((CompiledModelTestBase.Enum1)value)))); + EnumToNumberConverter.Instance)); enumDiscriminator.SetSentinelFromProviderValue(0); enumDiscriminator.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -172,21 +139,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)); + id.TypeMapping = SqlServerByteTypeMapping.Default; id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var key = runtimeEntityType.AddKey( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs index 23a95311c5a..e4840629dca 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs @@ -26,9 +26,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas typeof(CompiledModelTestBase.DependentDerived), baseEntityType, discriminatorProperty: "EnumDiscriminator", - discriminatorValue: CompiledModelTestBase.Enum1.Two, propertyCount: 2); + runtimeEntityType.SetDiscriminatorValueFromProviderValue(2); + var data = runtimeEntityType.AddProperty( "Data", typeof(string), @@ -64,18 +65,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); data.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "char(20)", size: 20, @@ -102,18 +91,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); money.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(9,3)", precision: 9, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs index c4e36379178..eab14db12b4 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs @@ -1,9 +1,7 @@ // using System; -using System.Collections; using System.Collections.Generic; using System.Globalization; -using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Reflection; @@ -72,18 +70,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.ManyTypesId v1, CompiledModelTestBase.ManyTypesId v2) => v1.Equals(v2), - int (CompiledModelTestBase.ManyTypesId v) => ((object)v).GetHashCode(), - CompiledModelTestBase.ManyTypesId (CompiledModelTestBase.ManyTypesId v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.ManyTypesId v1, CompiledModelTestBase.ManyTypesId v2) => v1.Equals(v2), - int (CompiledModelTestBase.ManyTypesId v) => ((object)v).GetHashCode(), - CompiledModelTestBase.ManyTypesId (CompiledModelTestBase.ManyTypesId v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(int (CompiledModelTestBase.ManyTypesId v) => v.Id, CompiledModelTestBase.ManyTypesId (int v) => new CompiledModelTestBase.ManyTypesId(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, @@ -124,19 +112,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @bool.TypeMapping = SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)); + @bool.TypeMapping = SqlServerBoolTypeMapping.Default; @bool.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var boolArray = runtimeEntityType.AddProperty( @@ -171,18 +147,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -192,19 +158,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance), - elementMapping: SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))); + elementMapping: SqlServerBoolTypeMapping.Default); var boolArrayElementType = boolArray.SetElementType(typeof(bool)); boolArrayElementType.TypeMapping = boolArray.TypeMapping.ElementTypeMapping; boolArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -241,18 +195,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, bool>(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ListOfValueTypesComparer, bool>(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, bool>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -262,19 +206,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, bool>( JsonBoolReaderWriter.Instance), - elementMapping: SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))); + elementMapping: SqlServerBoolTypeMapping.Default); var boolReadOnlyCollectionElementType = boolReadOnlyCollection.SetElementType(typeof(bool)); boolReadOnlyCollectionElementType.TypeMapping = boolReadOnlyCollection.TypeMapping.ElementTypeMapping; boolReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -311,18 +243,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, @@ -367,18 +289,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolToTwoValuesConverterProperty.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(byte (bool v) => ((byte)((v ? 1 : 0))), bool (byte v) => v == 1), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, @@ -419,18 +331,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolToZeroOneConverterProperty.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(short (bool v) => ((short)((v ? 1 : 0))), bool (short v) => v == 1), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, @@ -470,18 +372,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); bytes.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None); @@ -519,18 +409,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); bytesArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -541,18 +421,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance), elementMapping: SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None)); @@ -594,18 +462,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); bytesToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + keyComparer: ValueComparer.DefaultWithStructuralComparisons, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -650,18 +509,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); castingConverterProperty.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(decimal (int v) => ((decimal)v), int (decimal v) => ((int)v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, @@ -701,27 +550,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); @char.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])), + converter: CharToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])))); + CharToStringConverter.Instance)); @char.SetSentinelFromProviderValue("\0"); @char.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -757,18 +596,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); charArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -776,34 +605,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0]))))), + CharToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])))), + CharToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])), + converter: CharToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0]))))); + CharToStringConverter.Instance))); var charArrayElementType = charArray.SetElementType(typeof(char)); charArrayElementType.TypeMapping = charArray.TypeMapping.ElementTypeMapping; charArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -841,18 +660,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); charToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nchar(1)", size: 1, @@ -899,19 +708,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateOnly.TypeMapping = SqlServerDateOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)); + dateOnly.TypeMapping = SqlServerDateOnlyTypeMapping.Default; dateOnly.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var dateOnlyArray = runtimeEntityType.AddProperty( @@ -946,18 +743,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateOnlyArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -967,19 +754,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateOnlyReaderWriter.Instance), - elementMapping: SqlServerDateOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))); + elementMapping: SqlServerDateOnlyTypeMapping.Default); var dateOnlyArrayElementType = dateOnlyArray.SetElementType(typeof(DateOnly)); dateOnlyArrayElementType.TypeMapping = dateOnlyArray.TypeMapping.ElementTypeMapping; dateOnlyArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1017,18 +792,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateOnlyToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(10)", size: 10, @@ -1073,19 +838,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTime.TypeMapping = SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)); + dateTime.TypeMapping = SqlServerDateTimeTypeMapping.Default; dateTime.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var dateTimeArray = runtimeEntityType.AddProperty( @@ -1120,18 +873,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1141,19 +884,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var dateTimeArrayElementType = dateTimeArray.SetElementType(typeof(DateTime)); dateTimeArrayElementType.TypeMapping = dateTimeArray.TypeMapping.ElementTypeMapping; dateTimeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1191,18 +922,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeOffsetToBinaryConverterProperty.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(long (DateTimeOffset v) => DateTimeOffsetToBinaryConverter.ToLong(v), DateTimeOffset (long v) => DateTimeOffsetToBinaryConverter.ToDateTimeOffset(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, @@ -1243,18 +964,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeOffsetToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(12)", size: 12), @@ -1298,18 +1009,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeOffsetToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(48)", size: 48, @@ -1355,18 +1056,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeToBinaryConverterProperty.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(long (DateTime v) => v.ToBinary(), DateTime (long v) => DateTime.FromBinary(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, @@ -1407,18 +1098,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(48)", size: 48, @@ -1463,19 +1144,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeToTicksConverterProperty.TypeMapping = SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)); + dateTimeToTicksConverterProperty.TypeMapping = SqlServerDateTimeTypeMapping.Default; dateTimeToTicksConverterProperty.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var @decimal = runtimeEntityType.AddProperty( @@ -1510,19 +1179,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @decimal.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)); + @decimal.TypeMapping = SqlServerDecimalTypeMapping.Default; @decimal.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var decimalArray = runtimeEntityType.AddProperty( @@ -1557,18 +1214,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); decimalArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1578,19 +1225,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDecimalReaderWriter.Instance), - elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))); + elementMapping: SqlServerDecimalTypeMapping.Default); var decimalArrayElementType = decimalArray.SetElementType(typeof(decimal)); decimalArrayElementType.TypeMapping = decimalArray.TypeMapping.ElementTypeMapping; decimalArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1628,18 +1263,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); decimalNumberToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(16)", size: 16), @@ -1683,18 +1308,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); decimalNumberToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(64)", size: 64, @@ -1739,19 +1354,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @double.TypeMapping = SqlServerDoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)); + @double.TypeMapping = SqlServerDoubleTypeMapping.Default; @double.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var doubleArray = runtimeEntityType.AddProperty( @@ -1786,18 +1389,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); doubleArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultDoubleValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1807,19 +1400,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDoubleReaderWriter.Instance), - elementMapping: SqlServerDoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))); + elementMapping: SqlServerDoubleTypeMapping.Default); var doubleArrayElementType = doubleArray.SetElementType(typeof(double)); doubleArrayElementType.TypeMapping = doubleArray.TypeMapping.ElementTypeMapping; doubleArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1857,18 +1438,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); doubleNumberToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultDoubleValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(8)", size: 8), @@ -1912,18 +1483,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); doubleNumberToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultDoubleValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(64)", size: 64, @@ -1968,22 +1529,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); enum16.SetSentinelFromProviderValue((short)0); enum16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2019,18 +1570,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2038,29 +1579,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var enum16ArrayElementType = enum16Array.SetElementType(typeof(CompiledModelTestBase.Enum16)); enum16ArrayElementType.TypeMapping = enum16Array.TypeMapping.ElementTypeMapping; enum16Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2098,27 +1629,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum16AsString.SetSentinelFromProviderValue("Default"); enum16AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2154,18 +1675,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2173,34 +1684,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum16AsStringArrayElementType = enum16AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum16), providerClrType: typeof(string)); enum16AsStringArrayElementType.TypeMapping = enum16AsStringArray.TypeMapping.ElementTypeMapping; @@ -2238,18 +1739,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2257,34 +1748,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum16AsStringCollectionElementType = enum16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum16), providerClrType: typeof(string)); enum16AsStringCollectionElementType.TypeMapping = enum16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -2322,18 +1803,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2341,29 +1812,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var enum16CollectionElementType = enum16Collection.SetElementType(typeof(CompiledModelTestBase.Enum16)); enum16CollectionElementType.TypeMapping = enum16Collection.TypeMapping.ElementTypeMapping; enum16Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2400,22 +1861,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); enum32.SetSentinelFromProviderValue(0); enum32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2451,18 +1902,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2470,29 +1911,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var enum32ArrayElementType = enum32Array.SetElementType(typeof(CompiledModelTestBase.Enum32)); enum32ArrayElementType.TypeMapping = enum32Array.TypeMapping.ElementTypeMapping; enum32Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2530,27 +1961,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum32AsString.SetSentinelFromProviderValue("Default"); enum32AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2586,18 +2007,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2605,34 +2016,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum32AsStringArrayElementType = enum32AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum32), providerClrType: typeof(string)); enum32AsStringArrayElementType.TypeMapping = enum32AsStringArray.TypeMapping.ElementTypeMapping; @@ -2670,18 +2071,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2689,34 +2080,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum32AsStringCollectionElementType = enum32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum32), providerClrType: typeof(string)); enum32AsStringCollectionElementType.TypeMapping = enum32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -2754,18 +2135,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2773,29 +2144,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var enum32CollectionElementType = enum32Collection.SetElementType(typeof(CompiledModelTestBase.Enum32)); enum32CollectionElementType.TypeMapping = enum32Collection.TypeMapping.ElementTypeMapping; enum32Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2832,22 +2193,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); enum64.SetSentinelFromProviderValue(0L); enum64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2883,18 +2234,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2902,29 +2243,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var enum64ArrayElementType = enum64Array.SetElementType(typeof(CompiledModelTestBase.Enum64)); enum64ArrayElementType.TypeMapping = enum64Array.TypeMapping.ElementTypeMapping; enum64Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2962,27 +2293,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum64AsString.SetSentinelFromProviderValue("Default"); enum64AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3018,18 +2339,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3037,34 +2348,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum64AsStringArrayElementType = enum64AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum64), providerClrType: typeof(string)); enum64AsStringArrayElementType.TypeMapping = enum64AsStringArray.TypeMapping.ElementTypeMapping; @@ -3102,18 +2403,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3121,34 +2412,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum64AsStringCollectionElementType = enum64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum64), providerClrType: typeof(string)); enum64AsStringCollectionElementType.TypeMapping = enum64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -3186,18 +2467,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3205,29 +2476,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var enum64CollectionElementType = enum64Collection.SetElementType(typeof(CompiledModelTestBase.Enum64)); enum64CollectionElementType.TypeMapping = enum64Collection.TypeMapping.ElementTypeMapping; enum64Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3264,22 +2525,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); enum8.SetSentinelFromProviderValue((short)0); enum8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3315,18 +2566,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3334,29 +2575,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var enum8ArrayElementType = enum8Array.SetElementType(typeof(CompiledModelTestBase.Enum8)); enum8ArrayElementType.TypeMapping = enum8Array.TypeMapping.ElementTypeMapping; enum8Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3394,27 +2625,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum8AsString.SetSentinelFromProviderValue("Default"); enum8AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3450,18 +2671,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3469,34 +2680,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum8AsStringArrayElementType = enum8AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum8), providerClrType: typeof(string)); enum8AsStringArrayElementType.TypeMapping = enum8AsStringArray.TypeMapping.ElementTypeMapping; @@ -3534,18 +2735,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3553,34 +2744,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum8AsStringCollectionElementType = enum8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum8), providerClrType: typeof(string)); enum8AsStringCollectionElementType.TypeMapping = enum8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -3618,18 +2799,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3637,29 +2808,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var enum8CollectionElementType = enum8Collection.SetElementType(typeof(CompiledModelTestBase.Enum8)); enum8CollectionElementType.TypeMapping = enum8Collection.TypeMapping.ElementTypeMapping; enum8Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3697,18 +2858,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumToNumberConverterProperty.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, @@ -3749,18 +2900,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3805,22 +2946,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); enumU16.SetSentinelFromProviderValue(0); enumU16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3856,18 +2987,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3875,29 +2996,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var enumU16ArrayElementType = enumU16Array.SetElementType(typeof(CompiledModelTestBase.EnumU16)); enumU16ArrayElementType.TypeMapping = enumU16Array.TypeMapping.ElementTypeMapping; enumU16Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3935,27 +3046,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU16AsString.SetSentinelFromProviderValue("Min"); enumU16AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3991,18 +3092,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4010,34 +3101,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU16AsStringArrayElementType = enumU16AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU16), providerClrType: typeof(string)); enumU16AsStringArrayElementType.TypeMapping = enumU16AsStringArray.TypeMapping.ElementTypeMapping; @@ -4075,18 +3156,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4094,34 +3165,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU16AsStringCollectionElementType = enumU16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU16), providerClrType: typeof(string)); enumU16AsStringCollectionElementType.TypeMapping = enumU16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -4159,18 +3220,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4178,29 +3229,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var enumU16CollectionElementType = enumU16Collection.SetElementType(typeof(CompiledModelTestBase.EnumU16)); enumU16CollectionElementType.TypeMapping = enumU16Collection.TypeMapping.ElementTypeMapping; enumU16Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4237,22 +3278,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); enumU32.SetSentinelFromProviderValue(0L); enumU32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4288,18 +3319,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4307,29 +3328,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var enumU32ArrayElementType = enumU32Array.SetElementType(typeof(CompiledModelTestBase.EnumU32)); enumU32ArrayElementType.TypeMapping = enumU32Array.TypeMapping.ElementTypeMapping; enumU32Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4367,27 +3378,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU32AsString.SetSentinelFromProviderValue("Min"); enumU32AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4423,18 +3424,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4442,34 +3433,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU32AsStringArrayElementType = enumU32AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU32), providerClrType: typeof(string)); enumU32AsStringArrayElementType.TypeMapping = enumU32AsStringArray.TypeMapping.ElementTypeMapping; @@ -4507,18 +3488,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4526,34 +3497,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU32AsStringCollectionElementType = enumU32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU32), providerClrType: typeof(string)); enumU32AsStringCollectionElementType.TypeMapping = enumU32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -4591,18 +3552,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4610,29 +3561,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var enumU32CollectionElementType = enumU32Collection.SetElementType(typeof(CompiledModelTestBase.EnumU32)); enumU32CollectionElementType.TypeMapping = enumU32Collection.TypeMapping.ElementTypeMapping; enumU32Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4669,26 +3610,16 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))); + EnumToNumberConverter.Instance)); enumU64.SetSentinelFromProviderValue(0m); enumU64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4724,18 +3655,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4743,33 +3664,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))); + EnumToNumberConverter.Instance))); var enumU64ArrayElementType = enumU64Array.SetElementType(typeof(CompiledModelTestBase.EnumU64)); enumU64ArrayElementType.TypeMapping = enumU64Array.TypeMapping.ElementTypeMapping; enumU64Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4807,27 +3718,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU64AsString.SetSentinelFromProviderValue("Min"); enumU64AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4863,18 +3764,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4882,34 +3773,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU64AsStringArrayElementType = enumU64AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU64), providerClrType: typeof(string)); enumU64AsStringArrayElementType.TypeMapping = enumU64AsStringArray.TypeMapping.ElementTypeMapping; @@ -4947,18 +3828,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4966,34 +3837,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU64AsStringCollectionElementType = enumU64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU64), providerClrType: typeof(string)); enumU64AsStringCollectionElementType.TypeMapping = enumU64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -5031,18 +3892,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5050,33 +3901,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))); + EnumToNumberConverter.Instance))); var enumU64CollectionElementType = enumU64Collection.SetElementType(typeof(CompiledModelTestBase.EnumU64)); enumU64CollectionElementType.TypeMapping = enumU64Collection.TypeMapping.ElementTypeMapping; enumU64Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5113,22 +3954,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); enumU8.SetSentinelFromProviderValue((byte)0); enumU8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5164,18 +3995,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5183,29 +4004,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var enumU8ArrayElementType = enumU8Array.SetElementType(typeof(CompiledModelTestBase.EnumU8)); enumU8ArrayElementType.TypeMapping = enumU8Array.TypeMapping.ElementTypeMapping; enumU8Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5243,27 +4054,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU8AsString.SetSentinelFromProviderValue("Min"); enumU8AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5299,18 +4100,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5318,34 +4109,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU8AsStringArrayElementType = enumU8AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU8), providerClrType: typeof(string)); enumU8AsStringArrayElementType.TypeMapping = enumU8AsStringArray.TypeMapping.ElementTypeMapping; @@ -5383,18 +4164,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5402,34 +4173,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU8AsStringCollectionElementType = enumU8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU8), providerClrType: typeof(string)); enumU8AsStringCollectionElementType.TypeMapping = enumU8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -5467,18 +4228,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5486,29 +4237,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var enumU8CollectionElementType = enumU8Collection.SetElementType(typeof(CompiledModelTestBase.EnumU8)); enumU8CollectionElementType.TypeMapping = enumU8Collection.TypeMapping.ElementTypeMapping; enumU8Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5545,19 +4286,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @float.TypeMapping = SqlServerFloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)); + @float.TypeMapping = SqlServerFloatTypeMapping.Default; @float.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var floatArray = runtimeEntityType.AddProperty( @@ -5592,18 +4321,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); floatArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultFloatValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5613,19 +4332,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonFloatReaderWriter.Instance), - elementMapping: SqlServerFloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))); + elementMapping: SqlServerFloatTypeMapping.Default); var floatArrayElementType = floatArray.SetElementType(typeof(float)); floatArrayElementType.TypeMapping = floatArray.TypeMapping.ElementTypeMapping; floatArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5663,18 +4370,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guid.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); guid.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5711,18 +4406,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guidArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5733,18 +4418,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonGuidReaderWriter.Instance), elementMapping: GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier"))); var guidArrayElementType = guidArray.SetElementType(typeof(Guid)); @@ -5784,18 +4457,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guidToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(16)", size: 16), @@ -5839,18 +4502,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guidToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(36)", size: 36, @@ -5895,27 +4548,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddress.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))); + IPAddressToStringConverter.Instance)); iPAddress.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var iPAddressArray = runtimeEntityType.AddProperty( @@ -5950,18 +4593,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5969,34 +4602,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var iPAddressArrayElementType = iPAddressArray.SetElementType(typeof(IPAddress)); iPAddressArrayElementType.TypeMapping = iPAddressArray.TypeMapping.ElementTypeMapping; iPAddressArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6033,18 +4656,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6052,34 +4665,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var iPAddressReadOnlyCollectionElementType = iPAddressReadOnlyCollection.SetElementType(typeof(IPAddress), providerClrType: typeof(string)); iPAddressReadOnlyCollectionElementType.TypeMapping = iPAddressReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -6118,18 +4721,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: ValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(16)", size: 16), @@ -6172,18 +4765,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, @@ -6227,19 +4810,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int16.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)); + int16.TypeMapping = SqlServerShortTypeMapping.Default; int16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var int16Array = runtimeEntityType.AddProperty( @@ -6274,18 +4845,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6295,19 +4856,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var int16ArrayElementType = int16Array.SetElementType(typeof(short)); int16ArrayElementType.TypeMapping = int16Array.TypeMapping.ElementTypeMapping; int16Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6344,19 +4893,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + int32.TypeMapping = IntTypeMapping.Default; int32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var int32Array = runtimeEntityType.AddProperty( @@ -6391,18 +4928,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6412,19 +4939,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance), - elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))); + elementMapping: IntTypeMapping.Default); var int32ArrayElementType = int32Array.SetElementType(typeof(int)); int32ArrayElementType.TypeMapping = int32Array.TypeMapping.ElementTypeMapping; int32Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6461,18 +4976,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int32ReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ListOfValueTypesComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, int>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6482,19 +4987,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, int>( JsonInt32ReaderWriter.Instance), - elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))); + elementMapping: IntTypeMapping.Default); var int32ReadOnlyCollectionElementType = int32ReadOnlyCollection.SetElementType(typeof(int)); int32ReadOnlyCollectionElementType.TypeMapping = int32ReadOnlyCollection.TypeMapping.ElementTypeMapping; int32ReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6531,19 +5024,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int64.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + int64.TypeMapping = SqlServerLongTypeMapping.Default; int64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var int64Array = runtimeEntityType.AddProperty( @@ -6578,18 +5059,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6599,19 +5070,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance), - elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))); + elementMapping: SqlServerLongTypeMapping.Default); var int64ArrayElementType = int64Array.SetElementType(typeof(long)); int64ArrayElementType.TypeMapping = int64Array.TypeMapping.ElementTypeMapping; int64Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6648,22 +5107,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int8.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)))); + CastingConverter.Instance)); int8.SetSentinelFromProviderValue((short)0); int8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6699,18 +5148,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6718,29 +5157,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)))), + CastingConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v))))); + CastingConverter.Instance))); var int8ArrayElementType = int8Array.SetElementType(typeof(sbyte)); int8ArrayElementType.TypeMapping = int8Array.TypeMapping.ElementTypeMapping; int8Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6778,18 +5207,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); intNumberToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(4)", size: 4), @@ -6833,18 +5252,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); intNumberToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(64)", size: 64, @@ -6891,18 +5300,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullIntToNullStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int? v1, int? v2) => v1 == v2, - int (int? v) => ((int)v), - int? (int? v) => v), - keyComparer: new ValueComparer( - bool (int? v1, int? v2) => v1 == v2, - int (int? v) => ((int)v), - int? (int? v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6946,21 +5345,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableBool.TypeMapping = SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)); + nullableBool.TypeMapping = SqlServerBoolTypeMapping.Default; nullableBool.SetComparer(new NullableValueComparer(nullableBool.TypeMapping.Comparer)); - nullableBool.SetKeyComparer(new NullableValueComparer(nullableBool.TypeMapping.KeyComparer)); nullableBool.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableBoolArray = runtimeEntityType.AddProperty( @@ -6995,18 +5381,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBoolArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7016,19 +5392,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonBoolReaderWriter.Instance), - elementMapping: SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))); + elementMapping: SqlServerBoolTypeMapping.Default); var nullableBoolArrayElementType = nullableBoolArray.SetElementType(typeof(bool?), nullable: true); nullableBoolArrayElementType.TypeMapping = nullableBoolArray.TypeMapping.ElementTypeMapping; @@ -7068,18 +5432,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBytes.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None); @@ -7117,18 +5469,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBytesArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7139,18 +5481,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance), elementMapping: SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None)); @@ -7192,29 +5522,18 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableChar.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])), + converter: CharToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])))); + CharToStringConverter.Instance)); nullableChar.SetComparer(new NullableValueComparer(nullableChar.TypeMapping.Comparer)); - nullableChar.SetKeyComparer(new NullableValueComparer(nullableChar.TypeMapping.KeyComparer)); nullableChar.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableCharArray = runtimeEntityType.AddProperty( @@ -7249,18 +5568,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableCharArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7268,34 +5577,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0]))))), + CharToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])))), + CharToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])), + converter: CharToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0]))))); + CharToStringConverter.Instance))); var nullableCharArrayElementType = nullableCharArray.SetElementType(typeof(char?), nullable: true); nullableCharArrayElementType.TypeMapping = nullableCharArray.TypeMapping.ElementTypeMapping; @@ -7334,21 +5633,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDateOnly.TypeMapping = SqlServerDateOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)); + nullableDateOnly.TypeMapping = SqlServerDateOnlyTypeMapping.Default; nullableDateOnly.SetComparer(new NullableValueComparer(nullableDateOnly.TypeMapping.Comparer)); - nullableDateOnly.SetKeyComparer(new NullableValueComparer(nullableDateOnly.TypeMapping.KeyComparer)); nullableDateOnly.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableDateOnlyArray = runtimeEntityType.AddProperty( @@ -7383,18 +5669,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDateOnlyArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7404,19 +5680,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDateOnlyReaderWriter.Instance), - elementMapping: SqlServerDateOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))); + elementMapping: SqlServerDateOnlyTypeMapping.Default); var nullableDateOnlyArrayElementType = nullableDateOnlyArray.SetElementType(typeof(DateOnly?), nullable: true); nullableDateOnlyArrayElementType.TypeMapping = nullableDateOnlyArray.TypeMapping.ElementTypeMapping; @@ -7455,21 +5719,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDateTime.TypeMapping = SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)); + nullableDateTime.TypeMapping = SqlServerDateTimeTypeMapping.Default; nullableDateTime.SetComparer(new NullableValueComparer(nullableDateTime.TypeMapping.Comparer)); - nullableDateTime.SetKeyComparer(new NullableValueComparer(nullableDateTime.TypeMapping.KeyComparer)); nullableDateTime.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableDateTimeArray = runtimeEntityType.AddProperty( @@ -7504,18 +5755,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDateTimeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7525,19 +5766,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var nullableDateTimeArrayElementType = nullableDateTimeArray.SetElementType(typeof(DateTime?), nullable: true); nullableDateTimeArrayElementType.TypeMapping = nullableDateTimeArray.TypeMapping.ElementTypeMapping; @@ -7576,21 +5805,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDecimal.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)); + nullableDecimal.TypeMapping = SqlServerDecimalTypeMapping.Default; nullableDecimal.SetComparer(new NullableValueComparer(nullableDecimal.TypeMapping.Comparer)); - nullableDecimal.SetKeyComparer(new NullableValueComparer(nullableDecimal.TypeMapping.KeyComparer)); nullableDecimal.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableDecimalArray = runtimeEntityType.AddProperty( @@ -7625,18 +5841,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDecimalArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7646,19 +5852,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDecimalReaderWriter.Instance), - elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))); + elementMapping: SqlServerDecimalTypeMapping.Default); var nullableDecimalArrayElementType = nullableDecimalArray.SetElementType(typeof(decimal?), nullable: true); nullableDecimalArrayElementType.TypeMapping = nullableDecimalArray.TypeMapping.ElementTypeMapping; @@ -7697,21 +5891,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDouble.TypeMapping = SqlServerDoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)); + nullableDouble.TypeMapping = SqlServerDoubleTypeMapping.Default; nullableDouble.SetComparer(new NullableValueComparer(nullableDouble.TypeMapping.Comparer)); - nullableDouble.SetKeyComparer(new NullableValueComparer(nullableDouble.TypeMapping.KeyComparer)); nullableDouble.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableDoubleArray = runtimeEntityType.AddProperty( @@ -7746,18 +5927,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDoubleArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultDoubleValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7767,19 +5938,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDoubleReaderWriter.Instance), - elementMapping: SqlServerDoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))); + elementMapping: SqlServerDoubleTypeMapping.Default); var nullableDoubleArrayElementType = nullableDoubleArray.SetElementType(typeof(double?), nullable: true); nullableDoubleArrayElementType.TypeMapping = nullableDoubleArray.TypeMapping.ElementTypeMapping; @@ -7819,24 +5978,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); nullableEnum16.SetComparer(new NullableValueComparer(nullableEnum16.TypeMapping.Comparer)); - nullableEnum16.SetKeyComparer(new NullableValueComparer(nullableEnum16.TypeMapping.KeyComparer)); nullableEnum16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum16Array = runtimeEntityType.AddProperty( @@ -7871,18 +6019,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7890,29 +6028,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16ArrayElementType = nullableEnum16Array.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16ArrayElementType.TypeMapping = nullableEnum16Array.TypeMapping.ElementTypeMapping; @@ -7952,24 +6080,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16AsString.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); nullableEnum16AsString.SetComparer(new NullableValueComparer(nullableEnum16AsString.TypeMapping.Comparer)); - nullableEnum16AsString.SetKeyComparer(new NullableValueComparer(nullableEnum16AsString.TypeMapping.KeyComparer)); nullableEnum16AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum16AsStringArray = runtimeEntityType.AddProperty( @@ -8004,18 +6121,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8023,29 +6130,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16AsStringArrayElementType = nullableEnum16AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16AsStringArrayElementType.TypeMapping = nullableEnum16AsStringArray.TypeMapping.ElementTypeMapping; @@ -8084,18 +6181,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8103,29 +6190,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16AsStringCollectionElementType = nullableEnum16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16AsStringCollectionElementType.TypeMapping = nullableEnum16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -8164,18 +6241,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8183,29 +6250,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16CollectionElementType = nullableEnum16Collection.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16CollectionElementType.TypeMapping = nullableEnum16Collection.TypeMapping.ElementTypeMapping; @@ -8245,24 +6302,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); nullableEnum32.SetComparer(new NullableValueComparer(nullableEnum32.TypeMapping.Comparer)); - nullableEnum32.SetKeyComparer(new NullableValueComparer(nullableEnum32.TypeMapping.KeyComparer)); nullableEnum32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum32Array = runtimeEntityType.AddProperty( @@ -8297,18 +6343,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8316,29 +6352,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32ArrayElementType = nullableEnum32Array.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32ArrayElementType.TypeMapping = nullableEnum32Array.TypeMapping.ElementTypeMapping; @@ -8378,24 +6404,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32AsString.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); nullableEnum32AsString.SetComparer(new NullableValueComparer(nullableEnum32AsString.TypeMapping.Comparer)); - nullableEnum32AsString.SetKeyComparer(new NullableValueComparer(nullableEnum32AsString.TypeMapping.KeyComparer)); nullableEnum32AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum32AsStringArray = runtimeEntityType.AddProperty( @@ -8430,18 +6445,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8449,29 +6454,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32AsStringArrayElementType = nullableEnum32AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32AsStringArrayElementType.TypeMapping = nullableEnum32AsStringArray.TypeMapping.ElementTypeMapping; @@ -8510,18 +6505,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8529,29 +6514,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32AsStringCollectionElementType = nullableEnum32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32AsStringCollectionElementType.TypeMapping = nullableEnum32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -8590,18 +6565,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8609,29 +6574,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32CollectionElementType = nullableEnum32Collection.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32CollectionElementType.TypeMapping = nullableEnum32Collection.TypeMapping.ElementTypeMapping; @@ -8671,24 +6626,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); nullableEnum64.SetComparer(new NullableValueComparer(nullableEnum64.TypeMapping.Comparer)); - nullableEnum64.SetKeyComparer(new NullableValueComparer(nullableEnum64.TypeMapping.KeyComparer)); nullableEnum64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum64Array = runtimeEntityType.AddProperty( @@ -8723,18 +6667,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8742,29 +6676,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64ArrayElementType = nullableEnum64Array.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64ArrayElementType.TypeMapping = nullableEnum64Array.TypeMapping.ElementTypeMapping; @@ -8804,24 +6728,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64AsString.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); nullableEnum64AsString.SetComparer(new NullableValueComparer(nullableEnum64AsString.TypeMapping.Comparer)); - nullableEnum64AsString.SetKeyComparer(new NullableValueComparer(nullableEnum64AsString.TypeMapping.KeyComparer)); nullableEnum64AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum64AsStringArray = runtimeEntityType.AddProperty( @@ -8856,18 +6769,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8875,29 +6778,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64AsStringArrayElementType = nullableEnum64AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64AsStringArrayElementType.TypeMapping = nullableEnum64AsStringArray.TypeMapping.ElementTypeMapping; @@ -8936,18 +6829,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8955,29 +6838,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64AsStringCollectionElementType = nullableEnum64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64AsStringCollectionElementType.TypeMapping = nullableEnum64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -9016,18 +6889,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9035,29 +6898,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64CollectionElementType = nullableEnum64Collection.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64CollectionElementType.TypeMapping = nullableEnum64Collection.TypeMapping.ElementTypeMapping; @@ -9097,24 +6950,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); nullableEnum8.SetComparer(new NullableValueComparer(nullableEnum8.TypeMapping.Comparer)); - nullableEnum8.SetKeyComparer(new NullableValueComparer(nullableEnum8.TypeMapping.KeyComparer)); nullableEnum8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum8Array = runtimeEntityType.AddProperty( @@ -9149,18 +6991,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9168,29 +7000,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8ArrayElementType = nullableEnum8Array.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8ArrayElementType.TypeMapping = nullableEnum8Array.TypeMapping.ElementTypeMapping; @@ -9230,24 +7052,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8AsString.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); nullableEnum8AsString.SetComparer(new NullableValueComparer(nullableEnum8AsString.TypeMapping.Comparer)); - nullableEnum8AsString.SetKeyComparer(new NullableValueComparer(nullableEnum8AsString.TypeMapping.KeyComparer)); nullableEnum8AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum8AsStringArray = runtimeEntityType.AddProperty( @@ -9282,18 +7093,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9301,29 +7102,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8AsStringArrayElementType = nullableEnum8AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8AsStringArrayElementType.TypeMapping = nullableEnum8AsStringArray.TypeMapping.ElementTypeMapping; @@ -9362,18 +7153,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9381,29 +7162,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8AsStringCollectionElementType = nullableEnum8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8AsStringCollectionElementType.TypeMapping = nullableEnum8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -9442,18 +7213,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9461,29 +7222,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8CollectionElementType = nullableEnum8Collection.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8CollectionElementType.TypeMapping = nullableEnum8Collection.TypeMapping.ElementTypeMapping; @@ -9523,24 +7274,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); nullableEnumU16.SetComparer(new NullableValueComparer(nullableEnumU16.TypeMapping.Comparer)); - nullableEnumU16.SetKeyComparer(new NullableValueComparer(nullableEnumU16.TypeMapping.KeyComparer)); nullableEnumU16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU16Array = runtimeEntityType.AddProperty( @@ -9575,18 +7315,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9594,29 +7324,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16ArrayElementType = nullableEnumU16Array.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16ArrayElementType.TypeMapping = nullableEnumU16Array.TypeMapping.ElementTypeMapping; @@ -9656,24 +7376,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16AsString.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); nullableEnumU16AsString.SetComparer(new NullableValueComparer(nullableEnumU16AsString.TypeMapping.Comparer)); - nullableEnumU16AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU16AsString.TypeMapping.KeyComparer)); nullableEnumU16AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU16AsStringArray = runtimeEntityType.AddProperty( @@ -9708,18 +7417,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9727,29 +7426,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16AsStringArrayElementType = nullableEnumU16AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16AsStringArrayElementType.TypeMapping = nullableEnumU16AsStringArray.TypeMapping.ElementTypeMapping; @@ -9788,18 +7477,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9807,29 +7486,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16AsStringCollectionElementType = nullableEnumU16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16AsStringCollectionElementType.TypeMapping = nullableEnumU16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -9868,18 +7537,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9887,29 +7546,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16CollectionElementType = nullableEnumU16Collection.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16CollectionElementType.TypeMapping = nullableEnumU16Collection.TypeMapping.ElementTypeMapping; @@ -9949,24 +7598,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); nullableEnumU32.SetComparer(new NullableValueComparer(nullableEnumU32.TypeMapping.Comparer)); - nullableEnumU32.SetKeyComparer(new NullableValueComparer(nullableEnumU32.TypeMapping.KeyComparer)); nullableEnumU32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU32Array = runtimeEntityType.AddProperty( @@ -10001,18 +7639,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10020,29 +7648,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32ArrayElementType = nullableEnumU32Array.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32ArrayElementType.TypeMapping = nullableEnumU32Array.TypeMapping.ElementTypeMapping; @@ -10082,24 +7700,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32AsString.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); nullableEnumU32AsString.SetComparer(new NullableValueComparer(nullableEnumU32AsString.TypeMapping.Comparer)); - nullableEnumU32AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU32AsString.TypeMapping.KeyComparer)); nullableEnumU32AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU32AsStringArray = runtimeEntityType.AddProperty( @@ -10134,18 +7741,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10153,29 +7750,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32AsStringArrayElementType = nullableEnumU32AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32AsStringArrayElementType.TypeMapping = nullableEnumU32AsStringArray.TypeMapping.ElementTypeMapping; @@ -10214,18 +7801,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10233,29 +7810,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32AsStringCollectionElementType = nullableEnumU32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32AsStringCollectionElementType.TypeMapping = nullableEnumU32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -10294,18 +7861,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10313,29 +7870,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32CollectionElementType = nullableEnumU32Collection.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32CollectionElementType.TypeMapping = nullableEnumU32Collection.TypeMapping.ElementTypeMapping; @@ -10375,28 +7922,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))); + EnumToNumberConverter.Instance)); nullableEnumU64.SetComparer(new NullableValueComparer(nullableEnumU64.TypeMapping.Comparer)); - nullableEnumU64.SetKeyComparer(new NullableValueComparer(nullableEnumU64.TypeMapping.KeyComparer)); nullableEnumU64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU64Array = runtimeEntityType.AddProperty( @@ -10431,18 +7967,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10450,33 +7976,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))); + EnumToNumberConverter.Instance))); var nullableEnumU64ArrayElementType = nullableEnumU64Array.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64ArrayElementType.TypeMapping = nullableEnumU64Array.TypeMapping.ElementTypeMapping; @@ -10516,28 +8032,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64AsString.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))); + EnumToNumberConverter.Instance)); nullableEnumU64AsString.SetComparer(new NullableValueComparer(nullableEnumU64AsString.TypeMapping.Comparer)); - nullableEnumU64AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU64AsString.TypeMapping.KeyComparer)); nullableEnumU64AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU64AsStringArray = runtimeEntityType.AddProperty( @@ -10572,18 +8077,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10591,33 +8086,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))); + EnumToNumberConverter.Instance))); var nullableEnumU64AsStringArrayElementType = nullableEnumU64AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64AsStringArrayElementType.TypeMapping = nullableEnumU64AsStringArray.TypeMapping.ElementTypeMapping; @@ -10656,18 +8141,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10675,33 +8150,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))); + EnumToNumberConverter.Instance))); var nullableEnumU64AsStringCollectionElementType = nullableEnumU64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64AsStringCollectionElementType.TypeMapping = nullableEnumU64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -10740,18 +8205,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10759,33 +8214,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))); + EnumToNumberConverter.Instance))); var nullableEnumU64CollectionElementType = nullableEnumU64Collection.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64CollectionElementType.TypeMapping = nullableEnumU64Collection.TypeMapping.ElementTypeMapping; @@ -10825,24 +8270,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); nullableEnumU8.SetComparer(new NullableValueComparer(nullableEnumU8.TypeMapping.Comparer)); - nullableEnumU8.SetKeyComparer(new NullableValueComparer(nullableEnumU8.TypeMapping.KeyComparer)); nullableEnumU8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU8Array = runtimeEntityType.AddProperty( @@ -10877,18 +8311,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10896,29 +8320,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8ArrayElementType = nullableEnumU8Array.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8ArrayElementType.TypeMapping = nullableEnumU8Array.TypeMapping.ElementTypeMapping; @@ -10958,24 +8372,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8AsString.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); nullableEnumU8AsString.SetComparer(new NullableValueComparer(nullableEnumU8AsString.TypeMapping.Comparer)); - nullableEnumU8AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU8AsString.TypeMapping.KeyComparer)); nullableEnumU8AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU8AsStringArray = runtimeEntityType.AddProperty( @@ -11010,18 +8413,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11029,29 +8422,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8AsStringArrayElementType = nullableEnumU8AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8AsStringArrayElementType.TypeMapping = nullableEnumU8AsStringArray.TypeMapping.ElementTypeMapping; @@ -11090,18 +8473,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11109,29 +8482,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8AsStringCollectionElementType = nullableEnumU8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8AsStringCollectionElementType.TypeMapping = nullableEnumU8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -11170,18 +8533,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11189,29 +8542,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8CollectionElementType = nullableEnumU8Collection.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8CollectionElementType.TypeMapping = nullableEnumU8Collection.TypeMapping.ElementTypeMapping; @@ -11250,21 +8593,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableFloat.TypeMapping = SqlServerFloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)); + nullableFloat.TypeMapping = SqlServerFloatTypeMapping.Default; nullableFloat.SetComparer(new NullableValueComparer(nullableFloat.TypeMapping.Comparer)); - nullableFloat.SetKeyComparer(new NullableValueComparer(nullableFloat.TypeMapping.KeyComparer)); nullableFloat.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableFloatArray = runtimeEntityType.AddProperty( @@ -11299,18 +8629,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableFloatArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultFloatValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11320,19 +8640,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonFloatReaderWriter.Instance), - elementMapping: SqlServerFloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))); + elementMapping: SqlServerFloatTypeMapping.Default); var nullableFloatArrayElementType = nullableFloatArray.SetElementType(typeof(float?), nullable: true); nullableFloatArrayElementType.TypeMapping = nullableFloatArray.TypeMapping.ElementTypeMapping; @@ -11372,22 +8680,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableGuid.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); nullableGuid.SetComparer(new NullableValueComparer(nullableGuid.TypeMapping.Comparer)); - nullableGuid.SetKeyComparer(new NullableValueComparer(nullableGuid.TypeMapping.KeyComparer)); nullableGuid.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableGuidArray = runtimeEntityType.AddProperty( @@ -11422,18 +8717,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableGuidArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11444,18 +8729,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonGuidReaderWriter.Instance), elementMapping: GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier"))); var nullableGuidArrayElementType = nullableGuidArray.SetElementType(typeof(Guid?), @@ -11497,27 +8770,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableIPAddress.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))); + IPAddressToStringConverter.Instance)); nullableIPAddress.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableIPAddressArray = runtimeEntityType.AddProperty( @@ -11552,18 +8815,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableIPAddressArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11571,34 +8824,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var nullableIPAddressArrayElementType = nullableIPAddressArray.SetElementType(typeof(IPAddress), nullable: true); nullableIPAddressArrayElementType.TypeMapping = nullableIPAddressArray.TypeMapping.ElementTypeMapping; @@ -11636,21 +8879,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt16.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)); + nullableInt16.TypeMapping = SqlServerShortTypeMapping.Default; nullableInt16.SetComparer(new NullableValueComparer(nullableInt16.TypeMapping.Comparer)); - nullableInt16.SetKeyComparer(new NullableValueComparer(nullableInt16.TypeMapping.KeyComparer)); nullableInt16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableInt16Array = runtimeEntityType.AddProperty( @@ -11685,18 +8915,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11706,19 +8926,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var nullableInt16ArrayElementType = nullableInt16Array.SetElementType(typeof(short?), nullable: true); nullableInt16ArrayElementType.TypeMapping = nullableInt16Array.TypeMapping.ElementTypeMapping; @@ -11757,21 +8965,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + nullableInt32.TypeMapping = IntTypeMapping.Default; nullableInt32.SetComparer(new NullableValueComparer(nullableInt32.TypeMapping.Comparer)); - nullableInt32.SetKeyComparer(new NullableValueComparer(nullableInt32.TypeMapping.KeyComparer)); nullableInt32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableInt32Array = runtimeEntityType.AddProperty( @@ -11806,18 +9001,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11827,19 +9012,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance), - elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))); + elementMapping: IntTypeMapping.Default); var nullableInt32ArrayElementType = nullableInt32Array.SetElementType(typeof(int?), nullable: true); nullableInt32ArrayElementType.TypeMapping = nullableInt32Array.TypeMapping.ElementTypeMapping; @@ -11878,21 +9051,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt64.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + nullableInt64.TypeMapping = SqlServerLongTypeMapping.Default; nullableInt64.SetComparer(new NullableValueComparer(nullableInt64.TypeMapping.Comparer)); - nullableInt64.SetKeyComparer(new NullableValueComparer(nullableInt64.TypeMapping.KeyComparer)); nullableInt64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableInt64Array = runtimeEntityType.AddProperty( @@ -11927,18 +9087,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11948,19 +9098,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance), - elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))); + elementMapping: SqlServerLongTypeMapping.Default); var nullableInt64ArrayElementType = nullableInt64Array.SetElementType(typeof(long?), nullable: true); nullableInt64ArrayElementType.TypeMapping = nullableInt64Array.TypeMapping.ElementTypeMapping; @@ -12000,24 +9138,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt8.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)))); + CastingConverter.Instance)); nullableInt8.SetComparer(new NullableValueComparer(nullableInt8.TypeMapping.Comparer)); - nullableInt8.SetKeyComparer(new NullableValueComparer(nullableInt8.TypeMapping.KeyComparer)); nullableInt8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableInt8Array = runtimeEntityType.AddProperty( @@ -12052,18 +9179,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12071,29 +9188,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)))), + CastingConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v))))); + CastingConverter.Instance))); var nullableInt8ArrayElementType = nullableInt8Array.SetElementType(typeof(sbyte?), nullable: true); nullableInt8ArrayElementType.TypeMapping = nullableInt8Array.TypeMapping.ElementTypeMapping; @@ -12133,27 +9240,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullablePhysicalAddress.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(20)", size: 20, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + PhysicalAddressToStringConverter.Instance)); nullablePhysicalAddress.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullablePhysicalAddressArray = runtimeEntityType.AddProperty( @@ -12188,18 +9285,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullablePhysicalAddressArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12207,34 +9294,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))), + PhysicalAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))), + PhysicalAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(20)", size: 20, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))); + PhysicalAddressToStringConverter.Instance))); var nullablePhysicalAddressArrayElementType = nullablePhysicalAddressArray.SetElementType(typeof(PhysicalAddress), nullable: true); nullablePhysicalAddressArrayElementType.TypeMapping = nullablePhysicalAddressArray.TypeMapping.ElementTypeMapping; @@ -12274,18 +9351,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12325,18 +9390,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12347,18 +9402,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12401,21 +9444,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableTimeOnly.TypeMapping = SqlServerTimeOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)); + nullableTimeOnly.TypeMapping = SqlServerTimeOnlyTypeMapping.Default; nullableTimeOnly.SetComparer(new NullableValueComparer(nullableTimeOnly.TypeMapping.Comparer)); - nullableTimeOnly.SetKeyComparer(new NullableValueComparer(nullableTimeOnly.TypeMapping.KeyComparer)); nullableTimeOnly.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableTimeOnlyArray = runtimeEntityType.AddProperty( @@ -12450,18 +9480,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableTimeOnlyArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12471,19 +9491,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonTimeOnlyReaderWriter.Instance), - elementMapping: SqlServerTimeOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))); + elementMapping: SqlServerTimeOnlyTypeMapping.Default); var nullableTimeOnlyArrayElementType = nullableTimeOnlyArray.SetElementType(typeof(TimeOnly?), nullable: true); nullableTimeOnlyArrayElementType.TypeMapping = nullableTimeOnlyArray.TypeMapping.ElementTypeMapping; @@ -12522,21 +9530,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableTimeSpan.TypeMapping = SqlServerTimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)); + nullableTimeSpan.TypeMapping = SqlServerTimeSpanTypeMapping.Default; nullableTimeSpan.SetComparer(new NullableValueComparer(nullableTimeSpan.TypeMapping.Comparer)); - nullableTimeSpan.SetKeyComparer(new NullableValueComparer(nullableTimeSpan.TypeMapping.KeyComparer)); nullableTimeSpan.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableTimeSpanArray = runtimeEntityType.AddProperty( @@ -12571,18 +9566,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableTimeSpanArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12592,19 +9577,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonTimeSpanReaderWriter.Instance), - elementMapping: SqlServerTimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))); + elementMapping: SqlServerTimeSpanTypeMapping.Default); var nullableTimeSpanArrayElementType = nullableTimeSpanArray.SetElementType(typeof(TimeSpan?), nullable: true); nullableTimeSpanArrayElementType.TypeMapping = nullableTimeSpanArray.TypeMapping.ElementTypeMapping; @@ -12644,24 +9617,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt16.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)))); + CastingConverter.Instance)); nullableUInt16.SetComparer(new NullableValueComparer(nullableUInt16.TypeMapping.Comparer)); - nullableUInt16.SetKeyComparer(new NullableValueComparer(nullableUInt16.TypeMapping.KeyComparer)); nullableUInt16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableUInt16Array = runtimeEntityType.AddProperty( @@ -12696,18 +9658,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12715,29 +9667,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)))), + CastingConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v))))); + CastingConverter.Instance))); var nullableUInt16ArrayElementType = nullableUInt16Array.SetElementType(typeof(ushort?), nullable: true); nullableUInt16ArrayElementType.TypeMapping = nullableUInt16Array.TypeMapping.ElementTypeMapping; @@ -12777,24 +9719,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt32.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)))); + CastingConverter.Instance)); nullableUInt32.SetComparer(new NullableValueComparer(nullableUInt32.TypeMapping.Comparer)); - nullableUInt32.SetKeyComparer(new NullableValueComparer(nullableUInt32.TypeMapping.KeyComparer)); nullableUInt32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableUInt32Array = runtimeEntityType.AddProperty( @@ -12829,18 +9760,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12848,29 +9769,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)))), + CastingConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v))))); + CastingConverter.Instance))); var nullableUInt32ArrayElementType = nullableUInt32Array.SetElementType(typeof(uint?), nullable: true); nullableUInt32ArrayElementType.TypeMapping = nullableUInt32Array.TypeMapping.ElementTypeMapping; @@ -12910,28 +9821,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt64.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)), + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)))); + CastingConverter.Instance)); nullableUInt64.SetComparer(new NullableValueComparer(nullableUInt64.TypeMapping.Comparer)); - nullableUInt64.SetKeyComparer(new NullableValueComparer(nullableUInt64.TypeMapping.KeyComparer)); nullableUInt64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableUInt64Array = runtimeEntityType.AddProperty( @@ -12966,18 +9866,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12985,33 +9875,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)))), + CastingConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)), + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v))))); + CastingConverter.Instance))); var nullableUInt64ArrayElementType = nullableUInt64Array.SetElementType(typeof(ulong?), nullable: true); nullableUInt64ArrayElementType.TypeMapping = nullableUInt64Array.TypeMapping.ElementTypeMapping; @@ -13050,21 +9930,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt8.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)); + nullableUInt8.TypeMapping = SqlServerByteTypeMapping.Default; nullableUInt8.SetComparer(new NullableValueComparer(nullableUInt8.TypeMapping.Comparer)); - nullableUInt8.SetKeyComparer(new NullableValueComparer(nullableUInt8.TypeMapping.KeyComparer)); nullableUInt8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableUInt8Array = runtimeEntityType.AddProperty( @@ -13099,18 +9966,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13120,19 +9977,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var nullableUInt8ArrayElementType = nullableUInt8Array.SetElementType(typeof(byte?), nullable: true); nullableUInt8ArrayElementType.TypeMapping = nullableUInt8Array.TypeMapping.ElementTypeMapping; @@ -13172,27 +10017,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUri.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + converter: UriToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + UriToStringConverter.Instance)); nullableUri.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableUriArray = runtimeEntityType.AddProperty( @@ -13227,18 +10062,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUriArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13246,34 +10071,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))), + UriToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))), + UriToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + converter: UriToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))); + UriToStringConverter.Instance))); var nullableUriArrayElementType = nullableUriArray.SetElementType(typeof(Uri), nullable: true); nullableUriArrayElementType.TypeMapping = nullableUriArray.TypeMapping.ElementTypeMapping; @@ -13311,27 +10126,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddress.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(20)", size: 20, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + PhysicalAddressToStringConverter.Instance)); physicalAddress.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var physicalAddressArray = runtimeEntityType.AddProperty( @@ -13366,18 +10171,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddressArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13385,34 +10180,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))), + PhysicalAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))), + PhysicalAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(20)", size: 20, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))); + PhysicalAddressToStringConverter.Instance))); var physicalAddressArrayElementType = physicalAddressArray.SetElementType(typeof(PhysicalAddress)); physicalAddressArrayElementType.TypeMapping = physicalAddressArray.TypeMapping.ElementTypeMapping; physicalAddressArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -13450,18 +10235,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddressToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: ValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(8)", size: 8), @@ -13504,18 +10279,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddressToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(20)", size: 20, @@ -13559,18 +10324,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); @string.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13610,18 +10363,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13632,18 +10375,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13685,18 +10416,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13707,18 +10428,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13761,18 +10470,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToBoolConverterProperty.TypeMapping = SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(bool (string v) => Convert.ToBoolean(v), string (bool v) => Convert.ToString(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonBoolReaderWriter.Instance, @@ -13812,18 +10511,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), converter: new ValueConverter(byte[] (string v) => Encoding.GetEncoding(12000).GetBytes(v), string (byte[] v) => Encoding.GetEncoding(12000).GetString(v)), @@ -13866,18 +10555,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToCharConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, @@ -13922,18 +10600,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDateOnlyConverterProperty.TypeMapping = SqlServerDateOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 10), converter: new ValueConverter(DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd")), @@ -13975,18 +10643,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDateTimeConverterProperty.TypeMapping = SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture), string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF")), @@ -14028,18 +10686,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDateTimeOffsetConverterProperty.TypeMapping = SqlServerDateTimeOffsetTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultDateTimeOffsetValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture), string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz")), @@ -14081,18 +10729,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDecimalNumberConverterProperty.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), @@ -14134,18 +10772,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDoubleNumberConverterProperty.TypeMapping = SqlServerDoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultDoubleValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v))), @@ -14187,18 +10815,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToEnumConverterProperty.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(long (string v) => ((long)(StringEnumConverter.ConvertToEnum(v))), string (long value) => ((object)((CompiledModelTestBase.EnumU32)value)).ToString()), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, @@ -14237,18 +10855,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToGuidConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -14289,18 +10895,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToIntNumberConverterProperty.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), @@ -14342,18 +10938,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToTimeOnlyConverterProperty.TypeMapping = SqlServerTimeOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o"))), @@ -14395,18 +10981,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToTimeSpanConverterProperty.TypeMapping = SqlServerTimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture), string (TimeSpan v) => v.ToString("c")), @@ -14448,18 +11024,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToUriConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -14503,19 +11068,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeOnly.TypeMapping = SqlServerTimeOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)); + timeOnly.TypeMapping = SqlServerTimeOnlyTypeMapping.Default; timeOnly.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var timeOnlyArray = runtimeEntityType.AddProperty( @@ -14550,18 +11103,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeOnlyArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -14571,19 +11114,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonTimeOnlyReaderWriter.Instance), - elementMapping: SqlServerTimeOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))); + elementMapping: SqlServerTimeOnlyTypeMapping.Default); var timeOnlyArrayElementType = timeOnlyArray.SetElementType(typeof(TimeOnly)); timeOnlyArrayElementType.TypeMapping = timeOnlyArray.TypeMapping.ElementTypeMapping; timeOnlyArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -14621,18 +11152,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeOnlyToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(48)", size: 48, @@ -14678,18 +11199,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeOnlyToTicksConverterProperty.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(long (TimeOnly v) => v.Ticks, TimeOnly (long v) => new TimeOnly(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, @@ -14729,19 +11240,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeSpan.TypeMapping = SqlServerTimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)); + timeSpan.TypeMapping = SqlServerTimeSpanTypeMapping.Default; timeSpan.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var timeSpanArray = runtimeEntityType.AddProperty( @@ -14776,18 +11275,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpanArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -14797,19 +11286,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonTimeSpanReaderWriter.Instance), - elementMapping: SqlServerTimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))); + elementMapping: SqlServerTimeSpanTypeMapping.Default); var timeSpanArrayElementType = timeSpanArray.SetElementType(typeof(TimeSpan)); timeSpanArrayElementType.TypeMapping = timeSpanArray.TypeMapping.ElementTypeMapping; timeSpanArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -14847,18 +11324,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpanToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(48)", size: 48, @@ -14904,18 +11371,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpanToTicksConverterProperty.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(long (TimeSpan v) => v.Ticks, TimeSpan (long v) => new TimeSpan(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, @@ -14955,22 +11412,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt16.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)))); + CastingConverter.Instance)); uInt16.SetSentinelFromProviderValue(0); uInt16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15006,18 +11453,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -15025,29 +11462,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)))), + CastingConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v))))); + CastingConverter.Instance))); var uInt16ArrayElementType = uInt16Array.SetElementType(typeof(ushort)); uInt16ArrayElementType.TypeMapping = uInt16Array.TypeMapping.ElementTypeMapping; uInt16Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15084,22 +11511,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt32.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)))); + CastingConverter.Instance)); uInt32.SetSentinelFromProviderValue(0L); uInt32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15135,18 +11552,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -15154,29 +11561,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)))), + CastingConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v))))); + CastingConverter.Instance))); var uInt32ArrayElementType = uInt32Array.SetElementType(typeof(uint)); uInt32ArrayElementType.TypeMapping = uInt32Array.TypeMapping.ElementTypeMapping; uInt32Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15213,26 +11610,16 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt64.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)), + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)))); + CastingConverter.Instance)); uInt64.SetSentinelFromProviderValue(0m); uInt64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15268,18 +11655,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -15287,33 +11664,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)))), + CastingConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)), + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v))))); + CastingConverter.Instance))); var uInt64ArrayElementType = uInt64Array.SetElementType(typeof(ulong)); uInt64ArrayElementType.TypeMapping = uInt64Array.TypeMapping.ElementTypeMapping; uInt64Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15350,19 +11717,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt8.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)); + uInt8.TypeMapping = SqlServerByteTypeMapping.Default; uInt8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var uInt8Array = runtimeEntityType.AddProperty( @@ -15397,18 +11752,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt8Array.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None); @@ -15446,18 +11789,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt8ReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -15467,19 +11800,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var uInt8ReadOnlyCollectionElementType = uInt8ReadOnlyCollection.SetElementType(typeof(byte)); uInt8ReadOnlyCollectionElementType.TypeMapping = uInt8ReadOnlyCollection.TypeMapping.ElementTypeMapping; uInt8ReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15516,27 +11837,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uri.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + converter: UriToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + UriToStringConverter.Instance)); uri.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var uriArray = runtimeEntityType.AddProperty( @@ -15571,18 +11882,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uriArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -15590,34 +11891,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))), + UriToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))), + UriToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + converter: UriToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))); + UriToStringConverter.Instance))); var uriArrayElementType = uriArray.SetElementType(typeof(Uri)); uriArrayElementType.TypeMapping = uriArray.TypeMapping.ElementTypeMapping; uriArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15655,18 +11946,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uriToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index 4feb049ec9c..eb2a517b303 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -51,19 +51,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - principalDerivedId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + principalDerivedId.TypeMapping = SqlServerLongTypeMapping.Default; principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); principalDerivedId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -84,18 +72,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 1, storeGenerationIndex: 1); principalDerivedAlternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); @@ -118,19 +94,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: 2, storeGenerationIndex: 2); - id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id.TypeMapping = IntTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); @@ -167,18 +131,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); details.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -218,19 +170,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + number.TypeMapping = IntTypeMapping.Default; number.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var refTypeArray = runtimeEntityType.AddProperty( @@ -266,18 +206,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -285,34 +215,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; refTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -350,18 +270,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -372,18 +282,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -426,18 +324,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -448,18 +336,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -502,18 +378,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -521,34 +387,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; refTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -586,18 +442,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -607,19 +453,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; valueTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -657,18 +491,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -678,19 +502,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; valueTypeEnumerable.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -728,18 +540,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -749,19 +551,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; valueTypeIList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -799,18 +589,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -820,19 +600,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; valueTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index 3e2569b803c..a2838aeefb9 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -54,19 +54,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - principalBaseId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + principalBaseId.TypeMapping = SqlServerLongTypeMapping.Default; principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); var overrides = new StoreObjectDictionary(); @@ -99,18 +87,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 1, storeGenerationIndex: 1); principalBaseAlternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); @@ -150,18 +126,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); details.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -212,19 +176,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + number.TypeMapping = IntTypeMapping.Default; number.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var refTypeArray = runtimeEntityType.AddProperty( @@ -261,18 +213,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -280,34 +222,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; refTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -346,18 +278,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -368,18 +290,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -423,18 +333,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -445,18 +345,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -500,18 +388,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -519,34 +397,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; refTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -585,18 +453,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -606,19 +464,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; valueTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -657,18 +503,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -678,19 +514,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; valueTypeEnumerable.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -729,18 +553,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -750,19 +564,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; valueTypeIList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -801,18 +603,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -822,19 +614,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; valueTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index eac59ac7285..8d56efcf7d6 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -70,22 +70,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + id.TypeMapping = SqlServerLongTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var overrides = new StoreObjectDictionary(); var idPrincipalDerived = new RuntimeRelationalPropertyOverrides( @@ -133,18 +120,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 1, storeGenerationIndex: 1); alternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); @@ -182,22 +157,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum1.SetSentinelFromProviderValue(0); enum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -234,24 +199,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); enum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var flagsEnum1 = runtimeEntityType.AddProperty( @@ -286,22 +240,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum1.SetSentinelFromProviderValue(0); flagsEnum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -338,22 +282,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum2.SetSentinelFromProviderValue(6); flagsEnum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -390,18 +324,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -409,34 +333,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; refTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -474,18 +388,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -496,18 +400,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -550,18 +442,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -572,18 +454,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -626,18 +496,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -645,34 +505,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; refTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -710,18 +560,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -731,19 +571,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; valueTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -781,18 +609,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -802,19 +620,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; valueTypeEnumerable.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -852,18 +658,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -873,19 +669,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; valueTypeIList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -923,18 +707,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -944,19 +718,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; valueTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index b6b4f83beea..a5e91bfeba0 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -90,19 +90,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - derivedsId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + derivedsId.TypeMapping = SqlServerLongTypeMapping.Default; derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); derivedsId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -162,18 +150,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 1, storeGenerationIndex: 1); derivedsAlternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); @@ -234,19 +210,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 2, storeGenerationIndex: 2); - principalsId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + principalsId.TypeMapping = SqlServerLongTypeMapping.Default; principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); principalsId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -306,18 +270,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 3, storeGenerationIndex: 3); principalsAlternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); @@ -363,14 +315,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(v1, v2), int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(v), byte[] (byte[] v) => v.ToArray()), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "rowversion", size: 8), diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentBaseEntityType.cs index 011c6fcc87c..97f73875c17 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentBaseEntityType.cs @@ -55,19 +55,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - principalId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + principalId.TypeMapping = SqlServerLongTypeMapping.Default; principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); principalId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -88,18 +76,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 1, storeGenerationIndex: 1); principalAlternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); @@ -122,22 +98,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumDiscriminator.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum1 value) => ((int)value), CompiledModelTestBase.Enum1 (int value) => ((CompiledModelTestBase.Enum1)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum1 value) => ((int)value), CompiledModelTestBase.Enum1 (int value) => ((CompiledModelTestBase.Enum1)value)))); + EnumToNumberConverter.Instance)); enumDiscriminator.SetSentinelFromProviderValue(0); enumDiscriminator.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -173,21 +139,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)); + id.TypeMapping = SqlServerByteTypeMapping.Default; id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var key = runtimeEntityType.AddKey( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentDerivedEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentDerivedEntityType.cs index f17c75e9c73..e4840629dca 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentDerivedEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentDerivedEntityType.cs @@ -65,18 +65,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); data.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "char(20)", size: 20, @@ -103,18 +91,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); money.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(9,3)", precision: 9, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs index c4e36379178..eab14db12b4 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs @@ -1,9 +1,7 @@ // using System; -using System.Collections; using System.Collections.Generic; using System.Globalization; -using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Reflection; @@ -72,18 +70,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.ManyTypesId v1, CompiledModelTestBase.ManyTypesId v2) => v1.Equals(v2), - int (CompiledModelTestBase.ManyTypesId v) => ((object)v).GetHashCode(), - CompiledModelTestBase.ManyTypesId (CompiledModelTestBase.ManyTypesId v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.ManyTypesId v1, CompiledModelTestBase.ManyTypesId v2) => v1.Equals(v2), - int (CompiledModelTestBase.ManyTypesId v) => ((object)v).GetHashCode(), - CompiledModelTestBase.ManyTypesId (CompiledModelTestBase.ManyTypesId v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(int (CompiledModelTestBase.ManyTypesId v) => v.Id, CompiledModelTestBase.ManyTypesId (int v) => new CompiledModelTestBase.ManyTypesId(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, @@ -124,19 +112,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @bool.TypeMapping = SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)); + @bool.TypeMapping = SqlServerBoolTypeMapping.Default; @bool.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var boolArray = runtimeEntityType.AddProperty( @@ -171,18 +147,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -192,19 +158,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance), - elementMapping: SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))); + elementMapping: SqlServerBoolTypeMapping.Default); var boolArrayElementType = boolArray.SetElementType(typeof(bool)); boolArrayElementType.TypeMapping = boolArray.TypeMapping.ElementTypeMapping; boolArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -241,18 +195,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, bool>(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ListOfValueTypesComparer, bool>(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, bool>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -262,19 +206,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, bool>( JsonBoolReaderWriter.Instance), - elementMapping: SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))); + elementMapping: SqlServerBoolTypeMapping.Default); var boolReadOnlyCollectionElementType = boolReadOnlyCollection.SetElementType(typeof(bool)); boolReadOnlyCollectionElementType.TypeMapping = boolReadOnlyCollection.TypeMapping.ElementTypeMapping; boolReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -311,18 +243,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, @@ -367,18 +289,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolToTwoValuesConverterProperty.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(byte (bool v) => ((byte)((v ? 1 : 0))), bool (byte v) => v == 1), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, @@ -419,18 +331,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolToZeroOneConverterProperty.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(short (bool v) => ((short)((v ? 1 : 0))), bool (short v) => v == 1), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, @@ -470,18 +372,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); bytes.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None); @@ -519,18 +409,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); bytesArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -541,18 +421,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance), elementMapping: SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None)); @@ -594,18 +462,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); bytesToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + keyComparer: ValueComparer.DefaultWithStructuralComparisons, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -650,18 +509,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); castingConverterProperty.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(decimal (int v) => ((decimal)v), int (decimal v) => ((int)v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, @@ -701,27 +550,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); @char.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])), + converter: CharToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])))); + CharToStringConverter.Instance)); @char.SetSentinelFromProviderValue("\0"); @char.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -757,18 +596,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); charArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -776,34 +605,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0]))))), + CharToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])))), + CharToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])), + converter: CharToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0]))))); + CharToStringConverter.Instance))); var charArrayElementType = charArray.SetElementType(typeof(char)); charArrayElementType.TypeMapping = charArray.TypeMapping.ElementTypeMapping; charArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -841,18 +660,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); charToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nchar(1)", size: 1, @@ -899,19 +708,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateOnly.TypeMapping = SqlServerDateOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)); + dateOnly.TypeMapping = SqlServerDateOnlyTypeMapping.Default; dateOnly.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var dateOnlyArray = runtimeEntityType.AddProperty( @@ -946,18 +743,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateOnlyArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -967,19 +754,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateOnlyReaderWriter.Instance), - elementMapping: SqlServerDateOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))); + elementMapping: SqlServerDateOnlyTypeMapping.Default); var dateOnlyArrayElementType = dateOnlyArray.SetElementType(typeof(DateOnly)); dateOnlyArrayElementType.TypeMapping = dateOnlyArray.TypeMapping.ElementTypeMapping; dateOnlyArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1017,18 +792,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateOnlyToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(10)", size: 10, @@ -1073,19 +838,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTime.TypeMapping = SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)); + dateTime.TypeMapping = SqlServerDateTimeTypeMapping.Default; dateTime.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var dateTimeArray = runtimeEntityType.AddProperty( @@ -1120,18 +873,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1141,19 +884,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var dateTimeArrayElementType = dateTimeArray.SetElementType(typeof(DateTime)); dateTimeArrayElementType.TypeMapping = dateTimeArray.TypeMapping.ElementTypeMapping; dateTimeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1191,18 +922,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeOffsetToBinaryConverterProperty.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(long (DateTimeOffset v) => DateTimeOffsetToBinaryConverter.ToLong(v), DateTimeOffset (long v) => DateTimeOffsetToBinaryConverter.ToDateTimeOffset(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, @@ -1243,18 +964,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeOffsetToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(12)", size: 12), @@ -1298,18 +1009,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeOffsetToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(48)", size: 48, @@ -1355,18 +1056,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeToBinaryConverterProperty.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(long (DateTime v) => v.ToBinary(), DateTime (long v) => DateTime.FromBinary(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, @@ -1407,18 +1098,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(48)", size: 48, @@ -1463,19 +1144,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - dateTimeToTicksConverterProperty.TypeMapping = SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)); + dateTimeToTicksConverterProperty.TypeMapping = SqlServerDateTimeTypeMapping.Default; dateTimeToTicksConverterProperty.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var @decimal = runtimeEntityType.AddProperty( @@ -1510,19 +1179,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @decimal.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)); + @decimal.TypeMapping = SqlServerDecimalTypeMapping.Default; @decimal.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var decimalArray = runtimeEntityType.AddProperty( @@ -1557,18 +1214,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); decimalArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1578,19 +1225,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDecimalReaderWriter.Instance), - elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))); + elementMapping: SqlServerDecimalTypeMapping.Default); var decimalArrayElementType = decimalArray.SetElementType(typeof(decimal)); decimalArrayElementType.TypeMapping = decimalArray.TypeMapping.ElementTypeMapping; decimalArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1628,18 +1263,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); decimalNumberToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(16)", size: 16), @@ -1683,18 +1308,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); decimalNumberToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(64)", size: 64, @@ -1739,19 +1354,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @double.TypeMapping = SqlServerDoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)); + @double.TypeMapping = SqlServerDoubleTypeMapping.Default; @double.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var doubleArray = runtimeEntityType.AddProperty( @@ -1786,18 +1389,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); doubleArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultDoubleValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1807,19 +1400,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDoubleReaderWriter.Instance), - elementMapping: SqlServerDoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))); + elementMapping: SqlServerDoubleTypeMapping.Default); var doubleArrayElementType = doubleArray.SetElementType(typeof(double)); doubleArrayElementType.TypeMapping = doubleArray.TypeMapping.ElementTypeMapping; doubleArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1857,18 +1438,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); doubleNumberToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultDoubleValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(8)", size: 8), @@ -1912,18 +1483,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); doubleNumberToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultDoubleValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(64)", size: 64, @@ -1968,22 +1529,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); enum16.SetSentinelFromProviderValue((short)0); enum16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2019,18 +1570,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2038,29 +1579,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var enum16ArrayElementType = enum16Array.SetElementType(typeof(CompiledModelTestBase.Enum16)); enum16ArrayElementType.TypeMapping = enum16Array.TypeMapping.ElementTypeMapping; enum16Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2098,27 +1629,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum16AsString.SetSentinelFromProviderValue("Default"); enum16AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2154,18 +1675,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2173,34 +1684,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum16AsStringArrayElementType = enum16AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum16), providerClrType: typeof(string)); enum16AsStringArrayElementType.TypeMapping = enum16AsStringArray.TypeMapping.ElementTypeMapping; @@ -2238,18 +1739,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2257,34 +1748,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum16AsStringCollectionElementType = enum16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum16), providerClrType: typeof(string)); enum16AsStringCollectionElementType.TypeMapping = enum16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -2322,18 +1803,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2341,29 +1812,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var enum16CollectionElementType = enum16Collection.SetElementType(typeof(CompiledModelTestBase.Enum16)); enum16CollectionElementType.TypeMapping = enum16Collection.TypeMapping.ElementTypeMapping; enum16Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2400,22 +1861,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); enum32.SetSentinelFromProviderValue(0); enum32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2451,18 +1902,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2470,29 +1911,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var enum32ArrayElementType = enum32Array.SetElementType(typeof(CompiledModelTestBase.Enum32)); enum32ArrayElementType.TypeMapping = enum32Array.TypeMapping.ElementTypeMapping; enum32Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2530,27 +1961,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum32AsString.SetSentinelFromProviderValue("Default"); enum32AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2586,18 +2007,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2605,34 +2016,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum32AsStringArrayElementType = enum32AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum32), providerClrType: typeof(string)); enum32AsStringArrayElementType.TypeMapping = enum32AsStringArray.TypeMapping.ElementTypeMapping; @@ -2670,18 +2071,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2689,34 +2080,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum32AsStringCollectionElementType = enum32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum32), providerClrType: typeof(string)); enum32AsStringCollectionElementType.TypeMapping = enum32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -2754,18 +2135,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2773,29 +2144,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var enum32CollectionElementType = enum32Collection.SetElementType(typeof(CompiledModelTestBase.Enum32)); enum32CollectionElementType.TypeMapping = enum32Collection.TypeMapping.ElementTypeMapping; enum32Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2832,22 +2193,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); enum64.SetSentinelFromProviderValue(0L); enum64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2883,18 +2234,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2902,29 +2243,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var enum64ArrayElementType = enum64Array.SetElementType(typeof(CompiledModelTestBase.Enum64)); enum64ArrayElementType.TypeMapping = enum64Array.TypeMapping.ElementTypeMapping; enum64Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2962,27 +2293,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum64AsString.SetSentinelFromProviderValue("Default"); enum64AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3018,18 +2339,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3037,34 +2348,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum64AsStringArrayElementType = enum64AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum64), providerClrType: typeof(string)); enum64AsStringArrayElementType.TypeMapping = enum64AsStringArray.TypeMapping.ElementTypeMapping; @@ -3102,18 +2403,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3121,34 +2412,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum64AsStringCollectionElementType = enum64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum64), providerClrType: typeof(string)); enum64AsStringCollectionElementType.TypeMapping = enum64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -3186,18 +2467,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3205,29 +2476,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var enum64CollectionElementType = enum64Collection.SetElementType(typeof(CompiledModelTestBase.Enum64)); enum64CollectionElementType.TypeMapping = enum64Collection.TypeMapping.ElementTypeMapping; enum64Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3264,22 +2525,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); enum8.SetSentinelFromProviderValue((short)0); enum8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3315,18 +2566,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3334,29 +2575,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var enum8ArrayElementType = enum8Array.SetElementType(typeof(CompiledModelTestBase.Enum8)); enum8ArrayElementType.TypeMapping = enum8Array.TypeMapping.ElementTypeMapping; enum8Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3394,27 +2625,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum8AsString.SetSentinelFromProviderValue("Default"); enum8AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3450,18 +2671,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3469,34 +2680,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum8AsStringArrayElementType = enum8AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum8), providerClrType: typeof(string)); enum8AsStringArrayElementType.TypeMapping = enum8AsStringArray.TypeMapping.ElementTypeMapping; @@ -3534,18 +2735,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3553,34 +2744,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum8AsStringCollectionElementType = enum8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum8), providerClrType: typeof(string)); enum8AsStringCollectionElementType.TypeMapping = enum8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -3618,18 +2799,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3637,29 +2808,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var enum8CollectionElementType = enum8Collection.SetElementType(typeof(CompiledModelTestBase.Enum8)); enum8CollectionElementType.TypeMapping = enum8Collection.TypeMapping.ElementTypeMapping; enum8Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3697,18 +2858,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumToNumberConverterProperty.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, @@ -3749,18 +2900,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3805,22 +2946,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); enumU16.SetSentinelFromProviderValue(0); enumU16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3856,18 +2987,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3875,29 +2996,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var enumU16ArrayElementType = enumU16Array.SetElementType(typeof(CompiledModelTestBase.EnumU16)); enumU16ArrayElementType.TypeMapping = enumU16Array.TypeMapping.ElementTypeMapping; enumU16Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3935,27 +3046,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU16AsString.SetSentinelFromProviderValue("Min"); enumU16AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -3991,18 +3092,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4010,34 +3101,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU16AsStringArrayElementType = enumU16AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU16), providerClrType: typeof(string)); enumU16AsStringArrayElementType.TypeMapping = enumU16AsStringArray.TypeMapping.ElementTypeMapping; @@ -4075,18 +3156,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4094,34 +3165,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU16AsStringCollectionElementType = enumU16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU16), providerClrType: typeof(string)); enumU16AsStringCollectionElementType.TypeMapping = enumU16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -4159,18 +3220,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4178,29 +3229,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var enumU16CollectionElementType = enumU16Collection.SetElementType(typeof(CompiledModelTestBase.EnumU16)); enumU16CollectionElementType.TypeMapping = enumU16Collection.TypeMapping.ElementTypeMapping; enumU16Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4237,22 +3278,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); enumU32.SetSentinelFromProviderValue(0L); enumU32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4288,18 +3319,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4307,29 +3328,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var enumU32ArrayElementType = enumU32Array.SetElementType(typeof(CompiledModelTestBase.EnumU32)); enumU32ArrayElementType.TypeMapping = enumU32Array.TypeMapping.ElementTypeMapping; enumU32Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4367,27 +3378,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU32AsString.SetSentinelFromProviderValue("Min"); enumU32AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4423,18 +3424,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4442,34 +3433,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU32AsStringArrayElementType = enumU32AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU32), providerClrType: typeof(string)); enumU32AsStringArrayElementType.TypeMapping = enumU32AsStringArray.TypeMapping.ElementTypeMapping; @@ -4507,18 +3488,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4526,34 +3497,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU32AsStringCollectionElementType = enumU32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU32), providerClrType: typeof(string)); enumU32AsStringCollectionElementType.TypeMapping = enumU32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -4591,18 +3552,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4610,29 +3561,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var enumU32CollectionElementType = enumU32Collection.SetElementType(typeof(CompiledModelTestBase.EnumU32)); enumU32CollectionElementType.TypeMapping = enumU32Collection.TypeMapping.ElementTypeMapping; enumU32Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4669,26 +3610,16 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))); + EnumToNumberConverter.Instance)); enumU64.SetSentinelFromProviderValue(0m); enumU64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4724,18 +3655,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4743,33 +3664,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))); + EnumToNumberConverter.Instance))); var enumU64ArrayElementType = enumU64Array.SetElementType(typeof(CompiledModelTestBase.EnumU64)); enumU64ArrayElementType.TypeMapping = enumU64Array.TypeMapping.ElementTypeMapping; enumU64Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4807,27 +3718,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU64AsString.SetSentinelFromProviderValue("Min"); enumU64AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -4863,18 +3764,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4882,34 +3773,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU64AsStringArrayElementType = enumU64AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU64), providerClrType: typeof(string)); enumU64AsStringArrayElementType.TypeMapping = enumU64AsStringArray.TypeMapping.ElementTypeMapping; @@ -4947,18 +3828,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -4966,34 +3837,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU64AsStringCollectionElementType = enumU64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU64), providerClrType: typeof(string)); enumU64AsStringCollectionElementType.TypeMapping = enumU64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -5031,18 +3892,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5050,33 +3901,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))); + EnumToNumberConverter.Instance))); var enumU64CollectionElementType = enumU64Collection.SetElementType(typeof(CompiledModelTestBase.EnumU64)); enumU64CollectionElementType.TypeMapping = enumU64Collection.TypeMapping.ElementTypeMapping; enumU64Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5113,22 +3954,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); enumU8.SetSentinelFromProviderValue((byte)0); enumU8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5164,18 +3995,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5183,29 +4004,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var enumU8ArrayElementType = enumU8Array.SetElementType(typeof(CompiledModelTestBase.EnumU8)); enumU8ArrayElementType.TypeMapping = enumU8Array.TypeMapping.ElementTypeMapping; enumU8Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5243,27 +4054,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8AsString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU8AsString.SetSentinelFromProviderValue("Min"); enumU8AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5299,18 +4100,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5318,34 +4109,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU8AsStringArrayElementType = enumU8AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU8), providerClrType: typeof(string)); enumU8AsStringArrayElementType.TypeMapping = enumU8AsStringArray.TypeMapping.ElementTypeMapping; @@ -5383,18 +4164,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5402,34 +4173,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + converter: EnumToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU8AsStringCollectionElementType = enumU8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU8), providerClrType: typeof(string)); enumU8AsStringCollectionElementType.TypeMapping = enumU8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -5467,18 +4228,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5486,29 +4237,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var enumU8CollectionElementType = enumU8Collection.SetElementType(typeof(CompiledModelTestBase.EnumU8)); enumU8CollectionElementType.TypeMapping = enumU8Collection.TypeMapping.ElementTypeMapping; enumU8Collection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5545,19 +4286,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - @float.TypeMapping = SqlServerFloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)); + @float.TypeMapping = SqlServerFloatTypeMapping.Default; @float.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var floatArray = runtimeEntityType.AddProperty( @@ -5592,18 +4321,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); floatArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultFloatValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5613,19 +4332,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonFloatReaderWriter.Instance), - elementMapping: SqlServerFloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))); + elementMapping: SqlServerFloatTypeMapping.Default); var floatArrayElementType = floatArray.SetElementType(typeof(float)); floatArrayElementType.TypeMapping = floatArray.TypeMapping.ElementTypeMapping; floatArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5663,18 +4370,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guid.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); guid.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -5711,18 +4406,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guidArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5733,18 +4418,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonGuidReaderWriter.Instance), elementMapping: GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier"))); var guidArrayElementType = guidArray.SetElementType(typeof(Guid)); @@ -5784,18 +4457,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guidToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(16)", size: 16), @@ -5839,18 +4502,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guidToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(36)", size: 36, @@ -5895,27 +4548,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddress.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))); + IPAddressToStringConverter.Instance)); iPAddress.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var iPAddressArray = runtimeEntityType.AddProperty( @@ -5950,18 +4593,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -5969,34 +4602,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var iPAddressArrayElementType = iPAddressArray.SetElementType(typeof(IPAddress)); iPAddressArrayElementType.TypeMapping = iPAddressArray.TypeMapping.ElementTypeMapping; iPAddressArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6033,18 +4656,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6052,34 +4665,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var iPAddressReadOnlyCollectionElementType = iPAddressReadOnlyCollection.SetElementType(typeof(IPAddress), providerClrType: typeof(string)); iPAddressReadOnlyCollectionElementType.TypeMapping = iPAddressReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -6118,18 +4721,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: ValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(16)", size: 16), @@ -6172,18 +4765,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, @@ -6227,19 +4810,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int16.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)); + int16.TypeMapping = SqlServerShortTypeMapping.Default; int16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var int16Array = runtimeEntityType.AddProperty( @@ -6274,18 +4845,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6295,19 +4856,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var int16ArrayElementType = int16Array.SetElementType(typeof(short)); int16ArrayElementType.TypeMapping = int16Array.TypeMapping.ElementTypeMapping; int16Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6344,19 +4893,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + int32.TypeMapping = IntTypeMapping.Default; int32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var int32Array = runtimeEntityType.AddProperty( @@ -6391,18 +4928,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6412,19 +4939,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance), - elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))); + elementMapping: IntTypeMapping.Default); var int32ArrayElementType = int32Array.SetElementType(typeof(int)); int32ArrayElementType.TypeMapping = int32Array.TypeMapping.ElementTypeMapping; int32Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6461,18 +4976,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int32ReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ListOfValueTypesComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, int>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6482,19 +4987,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, int>( JsonInt32ReaderWriter.Instance), - elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))); + elementMapping: IntTypeMapping.Default); var int32ReadOnlyCollectionElementType = int32ReadOnlyCollection.SetElementType(typeof(int)); int32ReadOnlyCollectionElementType.TypeMapping = int32ReadOnlyCollection.TypeMapping.ElementTypeMapping; int32ReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6531,19 +5024,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - int64.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + int64.TypeMapping = SqlServerLongTypeMapping.Default; int64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var int64Array = runtimeEntityType.AddProperty( @@ -6578,18 +5059,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6599,19 +5070,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance), - elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))); + elementMapping: SqlServerLongTypeMapping.Default); var int64ArrayElementType = int64Array.SetElementType(typeof(long)); int64ArrayElementType.TypeMapping = int64Array.TypeMapping.ElementTypeMapping; int64Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6648,22 +5107,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int8.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)))); + CastingConverter.Instance)); int8.SetSentinelFromProviderValue((short)0); int8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6699,18 +5148,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6718,29 +5157,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)))), + CastingConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v))))); + CastingConverter.Instance))); var int8ArrayElementType = int8Array.SetElementType(typeof(sbyte)); int8ArrayElementType.TypeMapping = int8Array.TypeMapping.ElementTypeMapping; int8Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -6778,18 +5207,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); intNumberToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(4)", size: 4), @@ -6833,18 +5252,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); intNumberToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(64)", size: 64, @@ -6891,18 +5300,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullIntToNullStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int? v1, int? v2) => v1 == v2, - int (int? v) => ((int)v), - int? (int? v) => v), - keyComparer: new ValueComparer( - bool (int? v1, int? v2) => v1 == v2, - int (int? v) => ((int)v), - int? (int? v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -6946,21 +5345,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableBool.TypeMapping = SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)); + nullableBool.TypeMapping = SqlServerBoolTypeMapping.Default; nullableBool.SetComparer(new NullableValueComparer(nullableBool.TypeMapping.Comparer)); - nullableBool.SetKeyComparer(new NullableValueComparer(nullableBool.TypeMapping.KeyComparer)); nullableBool.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableBoolArray = runtimeEntityType.AddProperty( @@ -6995,18 +5381,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBoolArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7016,19 +5392,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonBoolReaderWriter.Instance), - elementMapping: SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))); + elementMapping: SqlServerBoolTypeMapping.Default); var nullableBoolArrayElementType = nullableBoolArray.SetElementType(typeof(bool?), nullable: true); nullableBoolArrayElementType.TypeMapping = nullableBoolArray.TypeMapping.ElementTypeMapping; @@ -7068,18 +5432,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBytes.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None); @@ -7117,18 +5469,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBytesArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7139,18 +5481,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonByteArrayReaderWriter.Instance), elementMapping: SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None)); @@ -7192,29 +5522,18 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableChar.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])), + converter: CharToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])))); + CharToStringConverter.Instance)); nullableChar.SetComparer(new NullableValueComparer(nullableChar.TypeMapping.Comparer)); - nullableChar.SetKeyComparer(new NullableValueComparer(nullableChar.TypeMapping.KeyComparer)); nullableChar.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableCharArray = runtimeEntityType.AddProperty( @@ -7249,18 +5568,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableCharArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7268,34 +5577,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0]))))), + CharToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])))), + CharToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])), + converter: CharToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0]))))); + CharToStringConverter.Instance))); var nullableCharArrayElementType = nullableCharArray.SetElementType(typeof(char?), nullable: true); nullableCharArrayElementType.TypeMapping = nullableCharArray.TypeMapping.ElementTypeMapping; @@ -7334,21 +5633,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDateOnly.TypeMapping = SqlServerDateOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)); + nullableDateOnly.TypeMapping = SqlServerDateOnlyTypeMapping.Default; nullableDateOnly.SetComparer(new NullableValueComparer(nullableDateOnly.TypeMapping.Comparer)); - nullableDateOnly.SetKeyComparer(new NullableValueComparer(nullableDateOnly.TypeMapping.KeyComparer)); nullableDateOnly.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableDateOnlyArray = runtimeEntityType.AddProperty( @@ -7383,18 +5669,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDateOnlyArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7404,19 +5680,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDateOnlyReaderWriter.Instance), - elementMapping: SqlServerDateOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))); + elementMapping: SqlServerDateOnlyTypeMapping.Default); var nullableDateOnlyArrayElementType = nullableDateOnlyArray.SetElementType(typeof(DateOnly?), nullable: true); nullableDateOnlyArrayElementType.TypeMapping = nullableDateOnlyArray.TypeMapping.ElementTypeMapping; @@ -7455,21 +5719,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDateTime.TypeMapping = SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)); + nullableDateTime.TypeMapping = SqlServerDateTimeTypeMapping.Default; nullableDateTime.SetComparer(new NullableValueComparer(nullableDateTime.TypeMapping.Comparer)); - nullableDateTime.SetKeyComparer(new NullableValueComparer(nullableDateTime.TypeMapping.KeyComparer)); nullableDateTime.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableDateTimeArray = runtimeEntityType.AddProperty( @@ -7504,18 +5755,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDateTimeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7525,19 +5766,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var nullableDateTimeArrayElementType = nullableDateTimeArray.SetElementType(typeof(DateTime?), nullable: true); nullableDateTimeArrayElementType.TypeMapping = nullableDateTimeArray.TypeMapping.ElementTypeMapping; @@ -7576,21 +5805,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDecimal.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)); + nullableDecimal.TypeMapping = SqlServerDecimalTypeMapping.Default; nullableDecimal.SetComparer(new NullableValueComparer(nullableDecimal.TypeMapping.Comparer)); - nullableDecimal.SetKeyComparer(new NullableValueComparer(nullableDecimal.TypeMapping.KeyComparer)); nullableDecimal.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableDecimalArray = runtimeEntityType.AddProperty( @@ -7625,18 +5841,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDecimalArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7646,19 +5852,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDecimalReaderWriter.Instance), - elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))); + elementMapping: SqlServerDecimalTypeMapping.Default); var nullableDecimalArrayElementType = nullableDecimalArray.SetElementType(typeof(decimal?), nullable: true); nullableDecimalArrayElementType.TypeMapping = nullableDecimalArray.TypeMapping.ElementTypeMapping; @@ -7697,21 +5891,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableDouble.TypeMapping = SqlServerDoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)); + nullableDouble.TypeMapping = SqlServerDoubleTypeMapping.Default; nullableDouble.SetComparer(new NullableValueComparer(nullableDouble.TypeMapping.Comparer)); - nullableDouble.SetKeyComparer(new NullableValueComparer(nullableDouble.TypeMapping.KeyComparer)); nullableDouble.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableDoubleArray = runtimeEntityType.AddProperty( @@ -7746,18 +5927,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDoubleArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultDoubleValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7767,19 +5938,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDoubleReaderWriter.Instance), - elementMapping: SqlServerDoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))); + elementMapping: SqlServerDoubleTypeMapping.Default); var nullableDoubleArrayElementType = nullableDoubleArray.SetElementType(typeof(double?), nullable: true); nullableDoubleArrayElementType.TypeMapping = nullableDoubleArray.TypeMapping.ElementTypeMapping; @@ -7819,24 +5978,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); nullableEnum16.SetComparer(new NullableValueComparer(nullableEnum16.TypeMapping.Comparer)); - nullableEnum16.SetKeyComparer(new NullableValueComparer(nullableEnum16.TypeMapping.KeyComparer)); nullableEnum16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum16Array = runtimeEntityType.AddProperty( @@ -7871,18 +6019,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -7890,29 +6028,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16ArrayElementType = nullableEnum16Array.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16ArrayElementType.TypeMapping = nullableEnum16Array.TypeMapping.ElementTypeMapping; @@ -7952,24 +6080,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16AsString.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); nullableEnum16AsString.SetComparer(new NullableValueComparer(nullableEnum16AsString.TypeMapping.Comparer)); - nullableEnum16AsString.SetKeyComparer(new NullableValueComparer(nullableEnum16AsString.TypeMapping.KeyComparer)); nullableEnum16AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum16AsStringArray = runtimeEntityType.AddProperty( @@ -8004,18 +6121,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8023,29 +6130,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16AsStringArrayElementType = nullableEnum16AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16AsStringArrayElementType.TypeMapping = nullableEnum16AsStringArray.TypeMapping.ElementTypeMapping; @@ -8084,18 +6181,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8103,29 +6190,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16AsStringCollectionElementType = nullableEnum16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16AsStringCollectionElementType.TypeMapping = nullableEnum16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -8164,18 +6241,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8183,29 +6250,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16CollectionElementType = nullableEnum16Collection.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16CollectionElementType.TypeMapping = nullableEnum16Collection.TypeMapping.ElementTypeMapping; @@ -8245,24 +6302,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); nullableEnum32.SetComparer(new NullableValueComparer(nullableEnum32.TypeMapping.Comparer)); - nullableEnum32.SetKeyComparer(new NullableValueComparer(nullableEnum32.TypeMapping.KeyComparer)); nullableEnum32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum32Array = runtimeEntityType.AddProperty( @@ -8297,18 +6343,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8316,29 +6352,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32ArrayElementType = nullableEnum32Array.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32ArrayElementType.TypeMapping = nullableEnum32Array.TypeMapping.ElementTypeMapping; @@ -8378,24 +6404,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32AsString.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); nullableEnum32AsString.SetComparer(new NullableValueComparer(nullableEnum32AsString.TypeMapping.Comparer)); - nullableEnum32AsString.SetKeyComparer(new NullableValueComparer(nullableEnum32AsString.TypeMapping.KeyComparer)); nullableEnum32AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum32AsStringArray = runtimeEntityType.AddProperty( @@ -8430,18 +6445,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8449,29 +6454,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32AsStringArrayElementType = nullableEnum32AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32AsStringArrayElementType.TypeMapping = nullableEnum32AsStringArray.TypeMapping.ElementTypeMapping; @@ -8510,18 +6505,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8529,29 +6514,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32AsStringCollectionElementType = nullableEnum32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32AsStringCollectionElementType.TypeMapping = nullableEnum32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -8590,18 +6565,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8609,29 +6574,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32CollectionElementType = nullableEnum32Collection.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32CollectionElementType.TypeMapping = nullableEnum32Collection.TypeMapping.ElementTypeMapping; @@ -8671,24 +6626,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); nullableEnum64.SetComparer(new NullableValueComparer(nullableEnum64.TypeMapping.Comparer)); - nullableEnum64.SetKeyComparer(new NullableValueComparer(nullableEnum64.TypeMapping.KeyComparer)); nullableEnum64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum64Array = runtimeEntityType.AddProperty( @@ -8723,18 +6667,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8742,29 +6676,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64ArrayElementType = nullableEnum64Array.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64ArrayElementType.TypeMapping = nullableEnum64Array.TypeMapping.ElementTypeMapping; @@ -8804,24 +6728,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64AsString.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); nullableEnum64AsString.SetComparer(new NullableValueComparer(nullableEnum64AsString.TypeMapping.Comparer)); - nullableEnum64AsString.SetKeyComparer(new NullableValueComparer(nullableEnum64AsString.TypeMapping.KeyComparer)); nullableEnum64AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum64AsStringArray = runtimeEntityType.AddProperty( @@ -8856,18 +6769,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8875,29 +6778,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64AsStringArrayElementType = nullableEnum64AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64AsStringArrayElementType.TypeMapping = nullableEnum64AsStringArray.TypeMapping.ElementTypeMapping; @@ -8936,18 +6829,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -8955,29 +6838,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64AsStringCollectionElementType = nullableEnum64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64AsStringCollectionElementType.TypeMapping = nullableEnum64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -9016,18 +6889,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9035,29 +6898,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64CollectionElementType = nullableEnum64Collection.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64CollectionElementType.TypeMapping = nullableEnum64Collection.TypeMapping.ElementTypeMapping; @@ -9097,24 +6950,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); nullableEnum8.SetComparer(new NullableValueComparer(nullableEnum8.TypeMapping.Comparer)); - nullableEnum8.SetKeyComparer(new NullableValueComparer(nullableEnum8.TypeMapping.KeyComparer)); nullableEnum8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum8Array = runtimeEntityType.AddProperty( @@ -9149,18 +6991,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9168,29 +7000,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8ArrayElementType = nullableEnum8Array.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8ArrayElementType.TypeMapping = nullableEnum8Array.TypeMapping.ElementTypeMapping; @@ -9230,24 +7052,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8AsString.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); nullableEnum8AsString.SetComparer(new NullableValueComparer(nullableEnum8AsString.TypeMapping.Comparer)); - nullableEnum8AsString.SetKeyComparer(new NullableValueComparer(nullableEnum8AsString.TypeMapping.KeyComparer)); nullableEnum8AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnum8AsStringArray = runtimeEntityType.AddProperty( @@ -9282,18 +7093,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9301,29 +7102,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8AsStringArrayElementType = nullableEnum8AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8AsStringArrayElementType.TypeMapping = nullableEnum8AsStringArray.TypeMapping.ElementTypeMapping; @@ -9362,18 +7153,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9381,29 +7162,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8AsStringCollectionElementType = nullableEnum8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8AsStringCollectionElementType.TypeMapping = nullableEnum8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -9442,18 +7213,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9461,29 +7222,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum8 value) => ((short)value), CompiledModelTestBase.Enum8 (short value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8CollectionElementType = nullableEnum8Collection.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8CollectionElementType.TypeMapping = nullableEnum8Collection.TypeMapping.ElementTypeMapping; @@ -9523,24 +7274,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); nullableEnumU16.SetComparer(new NullableValueComparer(nullableEnumU16.TypeMapping.Comparer)); - nullableEnumU16.SetKeyComparer(new NullableValueComparer(nullableEnumU16.TypeMapping.KeyComparer)); nullableEnumU16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU16Array = runtimeEntityType.AddProperty( @@ -9575,18 +7315,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9594,29 +7324,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16ArrayElementType = nullableEnumU16Array.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16ArrayElementType.TypeMapping = nullableEnumU16Array.TypeMapping.ElementTypeMapping; @@ -9656,24 +7376,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16AsString.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); nullableEnumU16AsString.SetComparer(new NullableValueComparer(nullableEnumU16AsString.TypeMapping.Comparer)); - nullableEnumU16AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU16AsString.TypeMapping.KeyComparer)); nullableEnumU16AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU16AsStringArray = runtimeEntityType.AddProperty( @@ -9708,18 +7417,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9727,29 +7426,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16AsStringArrayElementType = nullableEnumU16AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16AsStringArrayElementType.TypeMapping = nullableEnumU16AsStringArray.TypeMapping.ElementTypeMapping; @@ -9788,18 +7477,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9807,29 +7486,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16AsStringCollectionElementType = nullableEnumU16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16AsStringCollectionElementType.TypeMapping = nullableEnumU16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -9868,18 +7537,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -9887,29 +7546,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.EnumU16 value) => ((int)value), CompiledModelTestBase.EnumU16 (int value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16CollectionElementType = nullableEnumU16Collection.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16CollectionElementType.TypeMapping = nullableEnumU16Collection.TypeMapping.ElementTypeMapping; @@ -9949,24 +7598,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); nullableEnumU32.SetComparer(new NullableValueComparer(nullableEnumU32.TypeMapping.Comparer)); - nullableEnumU32.SetKeyComparer(new NullableValueComparer(nullableEnumU32.TypeMapping.KeyComparer)); nullableEnumU32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU32Array = runtimeEntityType.AddProperty( @@ -10001,18 +7639,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10020,29 +7648,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32ArrayElementType = nullableEnumU32Array.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32ArrayElementType.TypeMapping = nullableEnumU32Array.TypeMapping.ElementTypeMapping; @@ -10082,24 +7700,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32AsString.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); nullableEnumU32AsString.SetComparer(new NullableValueComparer(nullableEnumU32AsString.TypeMapping.Comparer)); - nullableEnumU32AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU32AsString.TypeMapping.KeyComparer)); nullableEnumU32AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU32AsStringArray = runtimeEntityType.AddProperty( @@ -10134,18 +7741,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10153,29 +7750,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32AsStringArrayElementType = nullableEnumU32AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32AsStringArrayElementType.TypeMapping = nullableEnumU32AsStringArray.TypeMapping.ElementTypeMapping; @@ -10214,18 +7801,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10233,29 +7810,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32AsStringCollectionElementType = nullableEnumU32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32AsStringCollectionElementType.TypeMapping = nullableEnumU32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -10294,18 +7861,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10313,29 +7870,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.EnumU32 value) => ((long)value), CompiledModelTestBase.EnumU32 (long value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32CollectionElementType = nullableEnumU32Collection.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32CollectionElementType.TypeMapping = nullableEnumU32Collection.TypeMapping.ElementTypeMapping; @@ -10375,28 +7922,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))); + EnumToNumberConverter.Instance)); nullableEnumU64.SetComparer(new NullableValueComparer(nullableEnumU64.TypeMapping.Comparer)); - nullableEnumU64.SetKeyComparer(new NullableValueComparer(nullableEnumU64.TypeMapping.KeyComparer)); nullableEnumU64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU64Array = runtimeEntityType.AddProperty( @@ -10431,18 +7967,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10450,33 +7976,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))); + EnumToNumberConverter.Instance))); var nullableEnumU64ArrayElementType = nullableEnumU64Array.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64ArrayElementType.TypeMapping = nullableEnumU64Array.TypeMapping.ElementTypeMapping; @@ -10516,28 +8032,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64AsString.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))); + EnumToNumberConverter.Instance)); nullableEnumU64AsString.SetComparer(new NullableValueComparer(nullableEnumU64AsString.TypeMapping.Comparer)); - nullableEnumU64AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU64AsString.TypeMapping.KeyComparer)); nullableEnumU64AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU64AsStringArray = runtimeEntityType.AddProperty( @@ -10572,18 +8077,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10591,33 +8086,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))); + EnumToNumberConverter.Instance))); var nullableEnumU64AsStringArrayElementType = nullableEnumU64AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64AsStringArrayElementType.TypeMapping = nullableEnumU64AsStringArray.TypeMapping.ElementTypeMapping; @@ -10656,18 +8141,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10675,33 +8150,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))); + EnumToNumberConverter.Instance))); var nullableEnumU64AsStringCollectionElementType = nullableEnumU64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64AsStringCollectionElementType.TypeMapping = nullableEnumU64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -10740,18 +8205,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10759,33 +8214,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value)))), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (CompiledModelTestBase.EnumU64 value) => ((decimal)(((long)value))), CompiledModelTestBase.EnumU64 (decimal value) => ((CompiledModelTestBase.EnumU64)(((long)value))))))); + EnumToNumberConverter.Instance))); var nullableEnumU64CollectionElementType = nullableEnumU64Collection.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64CollectionElementType.TypeMapping = nullableEnumU64Collection.TypeMapping.ElementTypeMapping; @@ -10825,24 +8270,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); nullableEnumU8.SetComparer(new NullableValueComparer(nullableEnumU8.TypeMapping.Comparer)); - nullableEnumU8.SetKeyComparer(new NullableValueComparer(nullableEnumU8.TypeMapping.KeyComparer)); nullableEnumU8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU8Array = runtimeEntityType.AddProperty( @@ -10877,18 +8311,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -10896,29 +8320,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8ArrayElementType = nullableEnumU8Array.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8ArrayElementType.TypeMapping = nullableEnumU8Array.TypeMapping.ElementTypeMapping; @@ -10958,24 +8372,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8AsString.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); nullableEnumU8AsString.SetComparer(new NullableValueComparer(nullableEnumU8AsString.TypeMapping.Comparer)); - nullableEnumU8AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU8AsString.TypeMapping.KeyComparer)); nullableEnumU8AsString.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableEnumU8AsStringArray = runtimeEntityType.AddProperty( @@ -11010,18 +8413,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8AsStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11029,29 +8422,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8AsStringArrayElementType = nullableEnumU8AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8AsStringArrayElementType.TypeMapping = nullableEnumU8AsStringArray.TypeMapping.ElementTypeMapping; @@ -11090,18 +8473,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8AsStringCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11109,29 +8482,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8AsStringCollectionElementType = nullableEnumU8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8AsStringCollectionElementType.TypeMapping = nullableEnumU8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -11170,18 +8533,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8Collection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11189,29 +8542,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8CollectionElementType = nullableEnumU8Collection.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8CollectionElementType.TypeMapping = nullableEnumU8Collection.TypeMapping.ElementTypeMapping; @@ -11250,21 +8593,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableFloat.TypeMapping = SqlServerFloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)); + nullableFloat.TypeMapping = SqlServerFloatTypeMapping.Default; nullableFloat.SetComparer(new NullableValueComparer(nullableFloat.TypeMapping.Comparer)); - nullableFloat.SetKeyComparer(new NullableValueComparer(nullableFloat.TypeMapping.KeyComparer)); nullableFloat.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableFloatArray = runtimeEntityType.AddProperty( @@ -11299,18 +8629,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableFloatArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultFloatValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11320,19 +8640,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonFloatReaderWriter.Instance), - elementMapping: SqlServerFloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))); + elementMapping: SqlServerFloatTypeMapping.Default); var nullableFloatArrayElementType = nullableFloatArray.SetElementType(typeof(float?), nullable: true); nullableFloatArrayElementType.TypeMapping = nullableFloatArray.TypeMapping.ElementTypeMapping; @@ -11372,22 +8680,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableGuid.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); nullableGuid.SetComparer(new NullableValueComparer(nullableGuid.TypeMapping.Comparer)); - nullableGuid.SetKeyComparer(new NullableValueComparer(nullableGuid.TypeMapping.KeyComparer)); nullableGuid.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableGuidArray = runtimeEntityType.AddProperty( @@ -11422,18 +8717,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableGuidArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11444,18 +8729,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonGuidReaderWriter.Instance), elementMapping: GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier"))); var nullableGuidArrayElementType = nullableGuidArray.SetElementType(typeof(Guid?), @@ -11497,27 +8770,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableIPAddress.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))); + IPAddressToStringConverter.Instance)); nullableIPAddress.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableIPAddressArray = runtimeEntityType.AddProperty( @@ -11552,18 +8815,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableIPAddressArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11571,34 +8824,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var nullableIPAddressArrayElementType = nullableIPAddressArray.SetElementType(typeof(IPAddress), nullable: true); nullableIPAddressArrayElementType.TypeMapping = nullableIPAddressArray.TypeMapping.ElementTypeMapping; @@ -11636,21 +8879,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt16.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)); + nullableInt16.TypeMapping = SqlServerShortTypeMapping.Default; nullableInt16.SetComparer(new NullableValueComparer(nullableInt16.TypeMapping.Comparer)); - nullableInt16.SetKeyComparer(new NullableValueComparer(nullableInt16.TypeMapping.KeyComparer)); nullableInt16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableInt16Array = runtimeEntityType.AddProperty( @@ -11685,18 +8915,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11706,19 +8926,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var nullableInt16ArrayElementType = nullableInt16Array.SetElementType(typeof(short?), nullable: true); nullableInt16ArrayElementType.TypeMapping = nullableInt16Array.TypeMapping.ElementTypeMapping; @@ -11757,21 +8965,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + nullableInt32.TypeMapping = IntTypeMapping.Default; nullableInt32.SetComparer(new NullableValueComparer(nullableInt32.TypeMapping.Comparer)); - nullableInt32.SetKeyComparer(new NullableValueComparer(nullableInt32.TypeMapping.KeyComparer)); nullableInt32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableInt32Array = runtimeEntityType.AddProperty( @@ -11806,18 +9001,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11827,19 +9012,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance), - elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))); + elementMapping: IntTypeMapping.Default); var nullableInt32ArrayElementType = nullableInt32Array.SetElementType(typeof(int?), nullable: true); nullableInt32ArrayElementType.TypeMapping = nullableInt32Array.TypeMapping.ElementTypeMapping; @@ -11878,21 +9051,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableInt64.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + nullableInt64.TypeMapping = SqlServerLongTypeMapping.Default; nullableInt64.SetComparer(new NullableValueComparer(nullableInt64.TypeMapping.Comparer)); - nullableInt64.SetKeyComparer(new NullableValueComparer(nullableInt64.TypeMapping.KeyComparer)); nullableInt64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableInt64Array = runtimeEntityType.AddProperty( @@ -11927,18 +9087,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -11948,19 +9098,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance), - elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))); + elementMapping: SqlServerLongTypeMapping.Default); var nullableInt64ArrayElementType = nullableInt64Array.SetElementType(typeof(long?), nullable: true); nullableInt64ArrayElementType.TypeMapping = nullableInt64Array.TypeMapping.ElementTypeMapping; @@ -12000,24 +9138,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt8.TypeMapping = SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)))); + CastingConverter.Instance)); nullableInt8.SetComparer(new NullableValueComparer(nullableInt8.TypeMapping.Comparer)); - nullableInt8.SetKeyComparer(new NullableValueComparer(nullableInt8.TypeMapping.KeyComparer)); nullableInt8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableInt8Array = runtimeEntityType.AddProperty( @@ -12052,18 +9179,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12071,29 +9188,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)))), + CastingConverter.Instance)), elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - converter: new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (sbyte v) => ((short)v), sbyte (short v) => ((sbyte)v))))); + CastingConverter.Instance))); var nullableInt8ArrayElementType = nullableInt8Array.SetElementType(typeof(sbyte?), nullable: true); nullableInt8ArrayElementType.TypeMapping = nullableInt8Array.TypeMapping.ElementTypeMapping; @@ -12133,27 +9240,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullablePhysicalAddress.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(20)", size: 20, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + PhysicalAddressToStringConverter.Instance)); nullablePhysicalAddress.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullablePhysicalAddressArray = runtimeEntityType.AddProperty( @@ -12188,18 +9285,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullablePhysicalAddressArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12207,34 +9294,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))), + PhysicalAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))), + PhysicalAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(20)", size: 20, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))); + PhysicalAddressToStringConverter.Instance))); var nullablePhysicalAddressArrayElementType = nullablePhysicalAddressArray.SetElementType(typeof(PhysicalAddress), nullable: true); nullablePhysicalAddressArrayElementType.TypeMapping = nullablePhysicalAddressArray.TypeMapping.ElementTypeMapping; @@ -12274,18 +9351,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableString.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12325,18 +9390,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableStringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12347,18 +9402,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12401,21 +9444,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableTimeOnly.TypeMapping = SqlServerTimeOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)); + nullableTimeOnly.TypeMapping = SqlServerTimeOnlyTypeMapping.Default; nullableTimeOnly.SetComparer(new NullableValueComparer(nullableTimeOnly.TypeMapping.Comparer)); - nullableTimeOnly.SetKeyComparer(new NullableValueComparer(nullableTimeOnly.TypeMapping.KeyComparer)); nullableTimeOnly.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableTimeOnlyArray = runtimeEntityType.AddProperty( @@ -12450,18 +9480,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableTimeOnlyArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12471,19 +9491,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonTimeOnlyReaderWriter.Instance), - elementMapping: SqlServerTimeOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))); + elementMapping: SqlServerTimeOnlyTypeMapping.Default); var nullableTimeOnlyArrayElementType = nullableTimeOnlyArray.SetElementType(typeof(TimeOnly?), nullable: true); nullableTimeOnlyArrayElementType.TypeMapping = nullableTimeOnlyArray.TypeMapping.ElementTypeMapping; @@ -12522,21 +9530,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableTimeSpan.TypeMapping = SqlServerTimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)); + nullableTimeSpan.TypeMapping = SqlServerTimeSpanTypeMapping.Default; nullableTimeSpan.SetComparer(new NullableValueComparer(nullableTimeSpan.TypeMapping.Comparer)); - nullableTimeSpan.SetKeyComparer(new NullableValueComparer(nullableTimeSpan.TypeMapping.KeyComparer)); nullableTimeSpan.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableTimeSpanArray = runtimeEntityType.AddProperty( @@ -12571,18 +9566,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableTimeSpanArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12592,19 +9577,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonTimeSpanReaderWriter.Instance), - elementMapping: SqlServerTimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))); + elementMapping: SqlServerTimeSpanTypeMapping.Default); var nullableTimeSpanArrayElementType = nullableTimeSpanArray.SetElementType(typeof(TimeSpan?), nullable: true); nullableTimeSpanArrayElementType.TypeMapping = nullableTimeSpanArray.TypeMapping.ElementTypeMapping; @@ -12644,24 +9617,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt16.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)))); + CastingConverter.Instance)); nullableUInt16.SetComparer(new NullableValueComparer(nullableUInt16.TypeMapping.Comparer)); - nullableUInt16.SetKeyComparer(new NullableValueComparer(nullableUInt16.TypeMapping.KeyComparer)); nullableUInt16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableUInt16Array = runtimeEntityType.AddProperty( @@ -12696,18 +9658,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12715,29 +9667,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)))), + CastingConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v))))); + CastingConverter.Instance))); var nullableUInt16ArrayElementType = nullableUInt16Array.SetElementType(typeof(ushort?), nullable: true); nullableUInt16ArrayElementType.TypeMapping = nullableUInt16Array.TypeMapping.ElementTypeMapping; @@ -12777,24 +9719,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt32.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)))); + CastingConverter.Instance)); nullableUInt32.SetComparer(new NullableValueComparer(nullableUInt32.TypeMapping.Comparer)); - nullableUInt32.SetKeyComparer(new NullableValueComparer(nullableUInt32.TypeMapping.KeyComparer)); nullableUInt32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableUInt32Array = runtimeEntityType.AddProperty( @@ -12829,18 +9760,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12848,29 +9769,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)))), + CastingConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v))))); + CastingConverter.Instance))); var nullableUInt32ArrayElementType = nullableUInt32Array.SetElementType(typeof(uint?), nullable: true); nullableUInt32ArrayElementType.TypeMapping = nullableUInt32Array.TypeMapping.ElementTypeMapping; @@ -12910,28 +9821,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt64.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)), + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)))); + CastingConverter.Instance)); nullableUInt64.SetComparer(new NullableValueComparer(nullableUInt64.TypeMapping.Comparer)); - nullableUInt64.SetKeyComparer(new NullableValueComparer(nullableUInt64.TypeMapping.KeyComparer)); nullableUInt64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableUInt64Array = runtimeEntityType.AddProperty( @@ -12966,18 +9866,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -12985,33 +9875,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)))), + CastingConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)), + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v))))); + CastingConverter.Instance))); var nullableUInt64ArrayElementType = nullableUInt64Array.SetElementType(typeof(ulong?), nullable: true); nullableUInt64ArrayElementType.TypeMapping = nullableUInt64Array.TypeMapping.ElementTypeMapping; @@ -13050,21 +9930,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - nullableUInt8.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)); + nullableUInt8.TypeMapping = SqlServerByteTypeMapping.Default; nullableUInt8.SetComparer(new NullableValueComparer(nullableUInt8.TypeMapping.Comparer)); - nullableUInt8.SetKeyComparer(new NullableValueComparer(nullableUInt8.TypeMapping.KeyComparer)); nullableUInt8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableUInt8Array = runtimeEntityType.AddProperty( @@ -13099,18 +9966,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt8Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13120,19 +9977,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var nullableUInt8ArrayElementType = nullableUInt8Array.SetElementType(typeof(byte?), nullable: true); nullableUInt8ArrayElementType.TypeMapping = nullableUInt8Array.TypeMapping.ElementTypeMapping; @@ -13172,27 +10017,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUri.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + converter: UriToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + UriToStringConverter.Instance)); nullableUri.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var nullableUriArray = runtimeEntityType.AddProperty( @@ -13227,18 +10062,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUriArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13246,34 +10071,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))), + UriToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))), + UriToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + converter: UriToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))); + UriToStringConverter.Instance))); var nullableUriArrayElementType = nullableUriArray.SetElementType(typeof(Uri), nullable: true); nullableUriArrayElementType.TypeMapping = nullableUriArray.TypeMapping.ElementTypeMapping; @@ -13311,27 +10126,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddress.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(20)", size: 20, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + PhysicalAddressToStringConverter.Instance)); physicalAddress.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var physicalAddressArray = runtimeEntityType.AddProperty( @@ -13366,18 +10171,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddressArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13385,34 +10180,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))), + PhysicalAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))), + PhysicalAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(20)", size: 20, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))); + PhysicalAddressToStringConverter.Instance))); var physicalAddressArrayElementType = physicalAddressArray.SetElementType(typeof(PhysicalAddress)); physicalAddressArrayElementType.TypeMapping = physicalAddressArray.TypeMapping.ElementTypeMapping; physicalAddressArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -13450,18 +10235,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddressToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: ValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(8)", size: 8), @@ -13504,18 +10279,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddressToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(20)", size: 20, @@ -13559,18 +10324,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); @string.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13610,18 +10363,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13632,18 +10375,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13685,18 +10416,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13707,18 +10428,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -13761,18 +10470,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToBoolConverterProperty.TypeMapping = SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(bool (string v) => Convert.ToBoolean(v), string (bool v) => Convert.ToString(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonBoolReaderWriter.Instance, @@ -13812,18 +10511,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToBytesConverterProperty.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), converter: new ValueConverter(byte[] (string v) => Encoding.GetEncoding(12000).GetBytes(v), string (byte[] v) => Encoding.GetEncoding(12000).GetString(v)), @@ -13866,18 +10555,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToCharConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, @@ -13922,18 +10600,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDateOnlyConverterProperty.TypeMapping = SqlServerDateOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 10), converter: new ValueConverter(DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd")), @@ -13975,18 +10643,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDateTimeConverterProperty.TypeMapping = SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture), string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF")), @@ -14028,18 +10686,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDateTimeOffsetConverterProperty.TypeMapping = SqlServerDateTimeOffsetTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultDateTimeOffsetValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture), string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz")), @@ -14081,18 +10729,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDecimalNumberConverterProperty.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), @@ -14134,18 +10772,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDoubleNumberConverterProperty.TypeMapping = SqlServerDoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultDoubleValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v))), @@ -14187,18 +10815,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToEnumConverterProperty.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(long (string v) => ((long)(StringEnumConverter.ConvertToEnum(v))), string (long value) => ((object)((CompiledModelTestBase.EnumU32)value)).ToString()), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, @@ -14237,18 +10855,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToGuidConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -14289,18 +10895,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToIntNumberConverterProperty.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), @@ -14342,18 +10938,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToTimeOnlyConverterProperty.TypeMapping = SqlServerTimeOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o"))), @@ -14395,18 +10981,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToTimeSpanConverterProperty.TypeMapping = SqlServerTimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture), string (TimeSpan v) => v.ToString("c")), @@ -14448,18 +11024,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToUriConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -14503,19 +11068,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeOnly.TypeMapping = SqlServerTimeOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)); + timeOnly.TypeMapping = SqlServerTimeOnlyTypeMapping.Default; timeOnly.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var timeOnlyArray = runtimeEntityType.AddProperty( @@ -14550,18 +11103,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeOnlyArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -14571,19 +11114,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonTimeOnlyReaderWriter.Instance), - elementMapping: SqlServerTimeOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))); + elementMapping: SqlServerTimeOnlyTypeMapping.Default); var timeOnlyArrayElementType = timeOnlyArray.SetElementType(typeof(TimeOnly)); timeOnlyArrayElementType.TypeMapping = timeOnlyArray.TypeMapping.ElementTypeMapping; timeOnlyArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -14621,18 +11152,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeOnlyToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(48)", size: 48, @@ -14678,18 +11199,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeOnlyToTicksConverterProperty.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(long (TimeOnly v) => v.Ticks, TimeOnly (long v) => new TimeOnly(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, @@ -14729,19 +11240,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - timeSpan.TypeMapping = SqlServerTimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)); + timeSpan.TypeMapping = SqlServerTimeSpanTypeMapping.Default; timeSpan.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var timeSpanArray = runtimeEntityType.AddProperty( @@ -14776,18 +11275,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpanArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -14797,19 +11286,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonTimeSpanReaderWriter.Instance), - elementMapping: SqlServerTimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))); + elementMapping: SqlServerTimeSpanTypeMapping.Default); var timeSpanArrayElementType = timeSpanArray.SetElementType(typeof(TimeSpan)); timeSpanArrayElementType.TypeMapping = timeSpanArray.TypeMapping.ElementTypeMapping; timeSpanArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -14847,18 +11324,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpanToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(48)", size: 48, @@ -14904,18 +11371,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpanToTicksConverterProperty.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(long (TimeSpan v) => v.Ticks, TimeSpan (long v) => new TimeSpan(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, @@ -14955,22 +11412,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt16.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)))); + CastingConverter.Instance)); uInt16.SetSentinelFromProviderValue(0); uInt16.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15006,18 +11453,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt16Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -15025,29 +11462,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)))), + CastingConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (ushort v) => ((int)v), ushort (int v) => ((ushort)v))))); + CastingConverter.Instance))); var uInt16ArrayElementType = uInt16Array.SetElementType(typeof(ushort)); uInt16ArrayElementType.TypeMapping = uInt16Array.TypeMapping.ElementTypeMapping; uInt16Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15084,22 +11511,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt32.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)))); + CastingConverter.Instance)); uInt32.SetSentinelFromProviderValue(0L); uInt32.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15135,18 +11552,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt32Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -15154,29 +11561,19 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)))), + CastingConverter.Instance)), elementMapping: SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - converter: new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v)), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (uint v) => ((long)v), uint (long v) => ((uint)v))))); + CastingConverter.Instance))); var uInt32ArrayElementType = uInt32Array.SetElementType(typeof(uint)); uInt32ArrayElementType.TypeMapping = uInt32Array.TypeMapping.ElementTypeMapping; uInt32Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15213,26 +11610,16 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt64.TypeMapping = SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)), + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)))); + CastingConverter.Instance)); uInt64.SetSentinelFromProviderValue(0m); uInt64.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15268,18 +11655,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt64Array.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -15287,33 +11664,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v))))), + CastingConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)))), + CastingConverter.Instance)), elementMapping: SqlServerDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - keyComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "decimal(20,0)", precision: 20, scale: 0), - converter: new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v)), + converter: CastingConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonDecimalReaderWriter.Instance, - new ValueConverter(decimal (ulong v) => ((decimal)v), ulong (decimal v) => ((ulong)v))))); + CastingConverter.Instance))); var uInt64ArrayElementType = uInt64Array.SetElementType(typeof(ulong)); uInt64ArrayElementType.TypeMapping = uInt64Array.TypeMapping.ElementTypeMapping; uInt64Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15350,19 +11717,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - uInt8.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)); + uInt8.TypeMapping = SqlServerByteTypeMapping.Default; uInt8.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var uInt8Array = runtimeEntityType.AddProperty( @@ -15397,18 +11752,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt8Array.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None); @@ -15446,18 +11789,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt8ReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -15467,19 +11800,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var uInt8ReadOnlyCollectionElementType = uInt8ReadOnlyCollection.SetElementType(typeof(byte)); uInt8ReadOnlyCollectionElementType.TypeMapping = uInt8ReadOnlyCollection.TypeMapping.ElementTypeMapping; uInt8ReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15516,27 +11837,17 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uri.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + converter: UriToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + UriToStringConverter.Instance)); uri.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var uriArray = runtimeEntityType.AddProperty( @@ -15571,18 +11882,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uriArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -15590,34 +11891,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))), + UriToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))), + UriToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + converter: UriToStringConverter.Instance, storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))); + UriToStringConverter.Instance))); var uriArrayElementType = uriArray.SetElementType(typeof(Uri)); uriArrayElementType.TypeMapping = uriArray.TypeMapping.ElementTypeMapping; uriArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -15655,18 +11946,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uriToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs index 964bf6e22b2..5949e4eed9e 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs @@ -51,19 +51,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - principalDerivedId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + principalDerivedId.TypeMapping = SqlServerLongTypeMapping.Default; principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); principalDerivedId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -84,18 +72,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 1, storeGenerationIndex: 1); principalDerivedAlternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); @@ -119,19 +95,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 2, relationshipIndex: 2, storeGenerationIndex: 2); - __synthesizedOrdinal.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + __synthesizedOrdinal.TypeMapping = IntTypeMapping.Default; __synthesizedOrdinal.SetCurrentValueComparer(new EntryCurrentValueComparer(__synthesizedOrdinal)); __synthesizedOrdinal.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -168,18 +132,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); details.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -219,19 +171,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + number.TypeMapping = IntTypeMapping.Default; number.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var refTypeArray = runtimeEntityType.AddProperty( @@ -267,18 +207,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -286,34 +216,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; refTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -351,18 +271,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -373,18 +283,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -427,18 +325,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -449,18 +337,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -503,18 +379,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -522,34 +388,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; refTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -587,18 +443,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -608,19 +454,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; valueTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -658,18 +492,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -679,19 +503,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; valueTypeEnumerable.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -729,18 +541,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -750,19 +552,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; valueTypeIList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -800,18 +590,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -821,19 +601,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; valueTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs index 5e4a68c29f1..88d0c7c4fcf 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs @@ -53,19 +53,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - principalBaseId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + principalBaseId.TypeMapping = SqlServerLongTypeMapping.Default; principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); principalBaseId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -87,18 +75,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 1, storeGenerationIndex: 1); principalBaseAlternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); @@ -138,18 +114,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); details.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -190,19 +154,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + number.TypeMapping = IntTypeMapping.Default; number.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var refTypeArray = runtimeEntityType.AddProperty( @@ -239,18 +191,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -258,34 +200,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; refTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -324,18 +256,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -346,18 +268,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -401,18 +311,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -423,18 +323,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -478,18 +366,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -497,34 +375,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; refTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -563,18 +431,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -584,19 +442,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; valueTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -635,18 +481,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -656,19 +492,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; valueTypeEnumerable.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -707,18 +531,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -728,19 +542,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; valueTypeIList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -779,18 +581,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -800,19 +592,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; valueTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs index 630723f0c75..8dc9fbf4dea 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs @@ -71,22 +71,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + id.TypeMapping = SqlServerLongTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var alternateId = runtimeEntityType.AddProperty( @@ -124,18 +111,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 1, storeGenerationIndex: -1); alternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); @@ -159,18 +134,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); discriminator.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(55)", size: 55, @@ -210,22 +173,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum1.SetSentinelFromProviderValue(0); enum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -262,24 +215,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); enum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var flagsEnum1 = runtimeEntityType.AddProperty( @@ -314,22 +256,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum1.SetSentinelFromProviderValue(0); flagsEnum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -366,22 +298,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum2.SetSentinelFromProviderValue(6); flagsEnum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -418,18 +340,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -437,34 +349,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; refTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -502,18 +404,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -524,18 +416,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -578,18 +458,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -600,18 +470,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -654,18 +512,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -673,34 +521,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; refTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -738,18 +576,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -759,19 +587,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; valueTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -809,18 +625,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -830,19 +636,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; valueTypeEnumerable.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -880,18 +674,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -901,19 +685,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; valueTypeIList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -951,18 +723,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -972,19 +734,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; valueTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index b6b4f83beea..a5e91bfeba0 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -90,19 +90,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - derivedsId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + derivedsId.TypeMapping = SqlServerLongTypeMapping.Default; derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); derivedsId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -162,18 +150,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 1, storeGenerationIndex: 1); derivedsAlternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); @@ -234,19 +210,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 2, storeGenerationIndex: 2); - principalsId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + principalsId.TypeMapping = SqlServerLongTypeMapping.Default; principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); principalsId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -306,18 +270,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 3, storeGenerationIndex: 3); principalsAlternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); @@ -363,14 +315,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(v1, v2), int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(v), byte[] (byte[] v) => v.ToArray()), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + keyComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "rowversion", size: 8), diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs index b1913db5baa..389ee7a612e 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -47,19 +45,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id.TypeMapping = IntTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); @@ -96,18 +82,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); blob.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalBaseEntityType.cs index be80170d55a..8146eace246 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalBaseEntityType.cs @@ -74,22 +74,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + id.TypeMapping = SqlServerLongTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var discriminator = runtimeEntityType.AddProperty( @@ -110,18 +97,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); discriminator.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(55)", size: 55, @@ -161,22 +136,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum1.SetSentinelFromProviderValue(0); enum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -213,24 +178,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); enum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var flagsEnum1 = runtimeEntityType.AddProperty( @@ -265,22 +219,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum1.SetSentinelFromProviderValue(0); flagsEnum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -316,22 +260,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum2.SetSentinelFromProviderValue(0); flagsEnum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -350,22 +284,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: 1, storeGenerationIndex: 1); - principalBaseId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + principalBaseId.TypeMapping = SqlServerLongTypeMapping.Default; principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); principalBaseId.SetComparer(new NullableValueComparer(principalBaseId.TypeMapping.Comparer)); - principalBaseId.SetKeyComparer(new NullableValueComparer(principalBaseId.TypeMapping.KeyComparer)); principalBaseId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var refTypeArray = runtimeEntityType.AddProperty( @@ -401,18 +322,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -420,34 +331,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; refTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -485,18 +386,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -507,18 +398,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -561,18 +440,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -583,18 +452,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -637,18 +494,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -656,34 +503,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; refTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -721,18 +558,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -742,19 +569,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; valueTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -792,18 +607,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -813,19 +618,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; valueTypeEnumerable.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -863,18 +656,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -884,19 +667,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; valueTypeIList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -934,18 +705,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -955,19 +716,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; valueTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1084,18 +833,6 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: 2); details.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varchar(64)", size: 64, @@ -1150,19 +887,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + number.TypeMapping = IntTypeMapping.Default; number.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var refTypeArray = complexType.AddProperty( @@ -1210,18 +935,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1229,34 +944,24 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; refTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1306,18 +1011,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1328,18 +1023,6 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1394,18 +1077,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1416,18 +1089,6 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1482,18 +1143,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1501,34 +1152,24 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; refTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1578,18 +1219,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1599,19 +1230,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; valueTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1661,18 +1280,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1682,19 +1291,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; valueTypeEnumerable.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1744,18 +1341,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1765,19 +1352,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; valueTypeIList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1827,18 +1402,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1848,19 +1413,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; valueTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1975,18 +1528,6 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); alternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); alternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2037,22 +1578,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); enum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum1.SetSentinelFromProviderValue(0); enum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2103,24 +1634,13 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); enum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); enum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var flagsEnum1 = complexType.AddProperty( @@ -2169,22 +1689,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum1.SetSentinelFromProviderValue(0); flagsEnum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2234,22 +1744,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum2.SetSentinelFromProviderValue(0); flagsEnum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2299,21 +1799,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + id.TypeMapping = SqlServerLongTypeMapping.Default; id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var refTypeArray = complexType.AddProperty( @@ -2363,18 +1850,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2382,34 +1859,24 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; refTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2461,18 +1928,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2483,18 +1940,6 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2551,18 +1996,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2573,18 +2008,6 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2641,18 +2064,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2660,34 +2073,24 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; refTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2739,18 +2142,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2760,19 +2153,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; valueTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2824,18 +2205,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2845,19 +2216,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; valueTypeEnumerable.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2909,18 +2268,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2930,19 +2279,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; valueTypeIList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2994,18 +2331,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -3015,19 +2342,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; valueTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalDerivedEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalDerivedEntityType.cs index d75272e2289..061b13dbc08 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalDerivedEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/ComplexTypes/PrincipalDerivedEntityType.cs @@ -135,21 +135,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)); + id.TypeMapping = SqlServerByteTypeMapping.Default; id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); complexType.AddAnnotation("Relational:ContainerColumnName", "Dependent"); @@ -269,18 +256,6 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); details.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varchar(900)", size: 900)); @@ -341,19 +316,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - number.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + number.TypeMapping = IntTypeMapping.Default; number.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var refTypeArray = complexType.AddProperty( @@ -411,18 +374,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -430,34 +383,24 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; refTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -517,18 +460,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -539,18 +472,6 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -615,18 +536,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -637,18 +548,6 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -713,18 +612,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -732,34 +621,24 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; refTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -819,18 +698,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -840,19 +709,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; valueTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -912,18 +769,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -933,19 +780,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; valueTypeEnumerable.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1005,18 +840,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1026,19 +851,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; valueTypeIList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1098,18 +911,8 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1119,19 +922,7 @@ public static RuntimeComplexProperty Create(RuntimeEntityType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; valueTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1268,18 +1059,6 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); alternateId.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); alternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1340,22 +1119,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); enum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum1.SetSentinelFromProviderValue(0); enum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1416,24 +1185,13 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); enum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); enum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var flagsEnum1 = complexType.AddProperty( @@ -1492,22 +1250,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum1.SetSentinelFromProviderValue(0); flagsEnum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1567,22 +1315,12 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum2.SetSentinelFromProviderValue(0); flagsEnum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1642,21 +1380,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - id.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + id.TypeMapping = SqlServerLongTypeMapping.Default; id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var refTypeArray = complexType.AddProperty( @@ -1716,18 +1441,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1735,34 +1450,24 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; refTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -1824,18 +1529,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1846,18 +1541,6 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1924,18 +1607,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -1946,18 +1619,6 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2024,18 +1685,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2043,34 +1694,24 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; refTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2132,18 +1773,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2153,19 +1784,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; valueTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2227,18 +1846,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2248,19 +1857,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; valueTypeEnumerable.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2322,18 +1919,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2343,19 +1930,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; valueTypeIList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -2417,18 +1992,8 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -2438,19 +2003,7 @@ public static RuntimeComplexProperty Create(RuntimeComplexType declaringType) storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; valueTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Custom_function_parameter_type_mapping/FunctionParameterTypeMappingContextModelBuilder.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Custom_function_parameter_type_mapping/FunctionParameterTypeMappingContextModelBuilder.cs index ae3d7edf999..192070f27aa 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Custom_function_parameter_type_mapping/FunctionParameterTypeMappingContextModelBuilder.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Custom_function_parameter_type_mapping/FunctionParameterTypeMappingContextModelBuilder.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Reflection; using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata.Internal; @@ -48,35 +47,11 @@ partial void Initialize() false, "varchar"); param.TypeMapping = StringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varchar", dbType: System.Data.DbType.AnsiString)); getSqlFragmentStatic.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Custom_function_type_mapping/FunctionTypeMappingContextModelBuilder.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Custom_function_type_mapping/FunctionTypeMappingContextModelBuilder.cs index 9330bdd6d1e..1cf6be17b3b 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Custom_function_type_mapping/FunctionTypeMappingContextModelBuilder.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Custom_function_type_mapping/FunctionTypeMappingContextModelBuilder.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Reflection; using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata.Internal; @@ -48,18 +47,6 @@ partial void Initialize() false, "nvarchar(max)"); param.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -67,18 +54,6 @@ partial void Initialize() storeTypePostfix: StoreTypePostfix.None); getSqlFragmentStatic.TypeMapping = StringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varchar", dbType: System.Data.DbType.AnsiString)); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/DbFunctions/DataEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/DbFunctions/DataEntityType.cs index ccefbb428a7..db8f391cea7 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/DbFunctions/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/DbFunctions/DataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -62,18 +60,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); blob.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/DbFunctions/DbFunctionContextModelBuilder.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/DbFunctions/DbFunctionContextModelBuilder.cs index 62b15b3d9b3..5c34f74cdc5 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/DbFunctions/DbFunctionContextModelBuilder.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/DbFunctions/DbFunctionContextModelBuilder.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata.Internal; @@ -68,18 +67,6 @@ partial void Initialize() true, "uniqueidentifier"); id.TypeMapping = GuidTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); id.AddAnnotation("MyAnnotation", new[] { 1L }); @@ -90,18 +77,6 @@ partial void Initialize() false, "nchar(256)"); condition.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nchar(256)", size: 256, @@ -109,19 +84,7 @@ partial void Initialize() fixedLength: true, dbType: System.Data.DbType.StringFixedLength)); - getCount.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + getCount.TypeMapping = IntTypeMapping.Default; functions["Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelRelationalTestBase+DbFunctionContext.GetCount(System.Guid?,string)"] = getCount; var getData = new RuntimeDbFunction( @@ -157,19 +120,7 @@ partial void Initialize() typeof(int), false, "int"); - id0.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id0.TypeMapping = IntTypeMapping.Default; functions["Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelRelationalTestBase+DbFunctionContext.GetData(int)"] = getData0; @@ -195,18 +146,6 @@ partial void Initialize() false, "nchar(256)"); date.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nchar(256)", size: 256, @@ -214,19 +153,7 @@ partial void Initialize() fixedLength: true, dbType: System.Data.DbType.StringFixedLength)); - isDateStatic.TypeMapping = SqlServerBoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)); + isDateStatic.TypeMapping = SqlServerBoolTypeMapping.Default; isDateStatic.AddAnnotation("MyGuid", new Guid("00000000-0000-0000-0000-000000000000")); functions["Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelRelationalTestBase+DbFunctionContext.IsDateStatic(string)"] = isDateStatic; diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs index b1913db5baa..389ee7a612e 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -47,19 +45,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id.TypeMapping = IntTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); @@ -96,18 +82,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); blob.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Full_text_index/FullTextEntityEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Full_text_index/FullTextEntityEntityType.cs index 43558c61d19..8c2e84cc6e3 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Full_text_index/FullTextEntityEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Full_text_index/FullTextEntityEntityType.cs @@ -63,19 +63,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id.TypeMapping = IntTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); @@ -112,18 +100,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); title.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(450)", size: 450, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Key_HiLo_sequence/DataEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Key_HiLo_sequence/DataEntityType.cs index 90b722f2538..50ad414a285 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Key_HiLo_sequence/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Key_HiLo_sequence/DataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -47,19 +45,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id.TypeMapping = IntTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.AddAnnotation("SqlServer:HiLoSequenceName", "HL"); id.AddAnnotation("SqlServer:HiLoSequenceSchema", "S"); @@ -98,18 +84,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); blob.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Key_sequence/DataEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Key_sequence/DataEntityType.cs index 5a798585278..a9e968e0595 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Key_sequence/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Key_sequence/DataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -47,19 +45,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id.TypeMapping = IntTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.AddAnnotation("Relational:DefaultValueSql", "NEXT VALUE FOR [KeySeqSchema].[KeySeq]"); id.AddAnnotation("SqlServer:SequenceName", "KeySeq"); @@ -99,18 +85,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); blob.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs index fba5fd7f94c..3bf84e9a534 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs @@ -6,6 +6,7 @@ using System.Reflection; using System.Text; using Microsoft.EntityFrameworkCore.ChangeTracking; +using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Scaffolding; @@ -72,18 +73,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolToStringConverterProperty", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); boolToStringConverterProperty.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(1)", size: 1, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/AuthorEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/AuthorEntityType.cs index 8fabad5570b..cdcd70362d7 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/AuthorEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/AuthorEntityType.cs @@ -46,19 +46,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - postId.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + postId.TypeMapping = IntTypeMapping.Default; postId.SetCurrentValueComparer(new EntryCurrentValueComparer(postId)); postId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -94,18 +82,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); name.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/BlogEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/BlogEntityType.cs index 27a4da2242b..06d9c8164e8 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/BlogEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/BlogEntityType.cs @@ -62,19 +62,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id.TypeMapping = IntTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/PostEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/PostEntityType.cs index d587e8bffd0..ea6be0eed2d 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/PostEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/PostEntityType.cs @@ -65,19 +65,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id.TypeMapping = IntTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); @@ -96,19 +84,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 1, storeGenerationIndex: 1); - blogId.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + blogId.TypeMapping = IntTypeMapping.Default; blogId.SetCurrentValueComparer(new EntryCurrentValueComparer(blogId)); blogId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs index 7059bafc9f0..7ba910acd91 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs @@ -61,19 +61,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id.TypeMapping = IntTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -110,18 +98,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); data.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SpatialTypesTest/SpatialTypesEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SpatialTypesTest/SpatialTypesEntityType.cs index 9498128f9a8..69301f88bf1 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SpatialTypesTest/SpatialTypesEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SpatialTypesTest/SpatialTypesEntityType.cs @@ -63,19 +63,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id.TypeMapping = IntTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Tpc_Sprocs/DependentBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Tpc_Sprocs/DependentBaseEntityType.cs index 19be2f256ee..5769468e9e2 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Tpc_Sprocs/DependentBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Tpc_Sprocs/DependentBaseEntityType.cs @@ -63,22 +63,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)); + id.TypeMapping = SqlServerByteTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalId = runtimeEntityType.AddProperty( @@ -96,22 +83,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 1, storeGenerationIndex: 0); - principalId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + principalId.TypeMapping = SqlServerLongTypeMapping.Default; principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); principalId.SetComparer(new NullableValueComparer(principalId.TypeMapping.Comparer)); - principalId.SetKeyComparer(new NullableValueComparer(principalId.TypeMapping.KeyComparer)); principalId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var key = runtimeEntityType.AddKey( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Tpc_Sprocs/PrincipalBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Tpc_Sprocs/PrincipalBaseEntityType.cs index d0b806d8a1e..2c7cb572ae4 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Tpc_Sprocs/PrincipalBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Tpc_Sprocs/PrincipalBaseEntityType.cs @@ -69,22 +69,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: -1); - id.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + id.TypeMapping = SqlServerLongTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var overrides = new StoreObjectDictionary(); var idPrincipalBaseView = new RuntimeRelationalPropertyOverrides( @@ -131,22 +118,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: 0); enum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum1.SetSentinelFromProviderValue(1); var overrides0 = new StoreObjectDictionary(); @@ -194,24 +171,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); enum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var flagsEnum1 = runtimeEntityType.AddProperty( @@ -246,22 +212,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum1.SetSentinelFromProviderValue(0); flagsEnum1.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -297,22 +253,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum2.SetSentinelFromProviderValue(0); flagsEnum2.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -331,22 +277,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 1, storeGenerationIndex: 1); - principalBaseId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + principalBaseId.TypeMapping = SqlServerLongTypeMapping.Default; principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); principalBaseId.SetComparer(new NullableValueComparer(principalBaseId.TypeMapping.Comparer)); - principalBaseId.SetKeyComparer(new NullableValueComparer(principalBaseId.TypeMapping.KeyComparer)); principalBaseId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalDerivedId = runtimeEntityType.AddProperty( @@ -364,22 +297,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 1, relationshipIndex: 2, storeGenerationIndex: 2); - principalDerivedId.TypeMapping = SqlServerLongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)); + principalDerivedId.TypeMapping = SqlServerLongTypeMapping.Default; principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); principalDerivedId.SetComparer(new NullableValueComparer(principalDerivedId.TypeMapping.Comparer)); - principalDerivedId.SetKeyComparer(new NullableValueComparer(principalDerivedId.TypeMapping.KeyComparer)); principalDerivedId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var refTypeArray = runtimeEntityType.AddProperty( @@ -415,18 +335,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -434,34 +344,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; refTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -499,18 +399,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -521,18 +411,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -575,18 +453,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -597,18 +465,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -651,18 +507,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -670,34 +516,24 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqlServerStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(45)", size: 45, unicode: true, dbType: System.Data.DbType.String), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; refTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -735,18 +571,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -756,19 +582,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDateTimeReaderWriter.Instance), - elementMapping: SqlServerDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))); + elementMapping: SqlServerDateTimeTypeMapping.Default); var valueTypeArrayElementType = valueTypeArray.SetElementType(typeof(DateTime)); valueTypeArrayElementType.TypeMapping = valueTypeArray.TypeMapping.ElementTypeMapping; valueTypeArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -806,18 +620,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -827,19 +631,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); valueTypeEnumerableElementType.TypeMapping = valueTypeEnumerable.TypeMapping.ElementTypeMapping; valueTypeEnumerable.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -877,18 +669,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -898,19 +680,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), - elementMapping: SqlServerByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))); + elementMapping: SqlServerByteTypeMapping.Default); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); valueTypeIListElementType.TypeMapping = valueTypeIList.TypeMapping.ElementTypeMapping; valueTypeIList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); @@ -948,18 +718,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "nvarchar(max)", unicode: true, @@ -969,19 +729,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None, jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), - elementMapping: SqlServerShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))); + elementMapping: SqlServerShortTypeMapping.Default); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); valueTypeListElementType.TypeMapping = valueTypeList.TypeMapping.ElementTypeMapping; valueTypeList.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs index 2d767899d9b..1b6b48e3321 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -48,19 +46,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: 0, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id.TypeMapping = IntTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); @@ -97,18 +83,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); blob.TypeMapping = SqlServerByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varbinary(max)"), storeTypePostfix: StoreTypePostfix.None); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Vector_index/VectorIndexEntityEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Vector_index/VectorIndexEntityEntityType.cs index 8f0019e03a7..dea9e16c470 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Vector_index/VectorIndexEntityEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Vector_index/VectorIndexEntityEntityType.cs @@ -64,19 +64,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas shadowIndex: -1, relationshipIndex: 0, storeGenerationIndex: 0); - id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)); + id.TypeMapping = IntTypeMapping.Default; id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); @@ -114,23 +102,11 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); vector.TypeMapping = SqlServerVectorTypeMapping.Default.Clone( - comparer: new ValueComparer>( - bool (SqlVector v1, SqlVector v2) => object.Equals(((object)v1), ((object)v2)), - int (SqlVector v) => ((object)v).GetHashCode(), - SqlVector (SqlVector v) => v), - keyComparer: new ValueComparer>( - bool (SqlVector v1, SqlVector v2) => object.Equals(((object)v1), ((object)v2)), - int (SqlVector v) => ((object)v).GetHashCode(), - SqlVector (SqlVector v) => v), - providerValueComparer: new ValueComparer>( - bool (SqlVector v1, SqlVector v2) => object.Equals(((object)v1), ((object)v2)), - int (SqlVector v) => ((object)v).GetHashCode(), - SqlVector (SqlVector v) => v), + comparer: ValueComparer>.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "vector(3)", size: 3)); vector.SetComparer(new NullableValueComparer>(vector.TypeMapping.Comparer)); - vector.SetKeyComparer(new NullableValueComparer>(vector.TypeMapping.KeyComparer)); vector.AddAnnotation("Relational:ColumnType", "vector(3)"); vector.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); diff --git a/test/EFCore.Sqlite.FunctionalTests/Query/PrimitiveCollectionsQuerySqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/Query/PrimitiveCollectionsQuerySqliteTest.cs index 754b10e0e40..df6cf914404 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Query/PrimitiveCollectionsQuerySqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Query/PrimitiveCollectionsQuerySqliteTest.cs @@ -981,8 +981,8 @@ public override Task Parameter_collection_Count_with_huge_number_of_values_over_ => base.Parameter_collection_Count_with_huge_number_of_values_over_5_operations_same_parameter(); // nothing to test here - public override Task Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping() - => base.Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping(); + public override Task Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_property() + => base.Parameter_collection_Count_with_huge_number_of_values_over_2_operations_same_parameter_different_property(); // nothing to test here public override Task Parameter_collection_Count_with_huge_number_of_values_over_5_operations_mixed_parameters_constants() @@ -1001,8 +1001,8 @@ public override Task Parameter_collection_of_ints_Contains_int_with_huge_number_ => base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_5_operations_same_parameter(); // nothing to test here - public override Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping() - => base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_type_mapping(); + public override Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_property() + => base.Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_2_operations_same_parameter_different_property(); // nothing to test here public override Task Parameter_collection_of_ints_Contains_int_with_huge_number_of_values_over_5_operations_forced_constants() diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/AutoIncrementEntityEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/AutoIncrementEntityEntityType.cs index de8114f2299..9d5d83282ad 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/AutoIncrementEntityEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/AutoIncrementEntityEntityType.cs @@ -63,18 +63,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DataEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DataEntityType.cs index 7908e4ddeb7..9ac5f757e4e 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -49,18 +47,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -98,18 +84,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); blob.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var point = runtimeEntityType.AddProperty( "Point", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs index c594e418cc9..47b24108cec 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs @@ -101,15 +101,6 @@ private IRelationalModel CreateRelationalModel() tableMappings.Add(autoIncrementEntityTableMapping); RelationalModel.CreateColumnMapping(idColumn, autoIncrementEntity.FindProperty("Id")!, autoIncrementEntityTableMapping); RelationalModel.CreateColumnMapping(nameColumn, autoIncrementEntity.FindProperty("Name")!, autoIncrementEntityTableMapping); - var pK_AutoIncrementEntity = new UniqueConstraint("PK_AutoIncrementEntity", autoIncrementEntityTable, new[] { idColumn }); - autoIncrementEntityTable.PrimaryKey = pK_AutoIncrementEntity; - pK_AutoIncrementEntity.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(pK_AutoIncrementEntity)); - var pK_AutoIncrementEntityKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelSqliteTest+AutoIncrementEntity", - new[] { "Id" }); - pK_AutoIncrementEntity.MappedKeys.Add(pK_AutoIncrementEntityKey); - RelationalModel.GetOrCreateUniqueConstraints(pK_AutoIncrementEntityKey).Add(pK_AutoIncrementEntity); - autoIncrementEntityTable.UniqueConstraints.Add("PK_AutoIncrementEntity", pK_AutoIncrementEntity); var data = FindEntityType("Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+Data")!; @@ -161,15 +152,6 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(idColumn0, data.FindProperty("Id")!, dataTableMapping); RelationalModel.CreateColumnMapping(blobColumn, data.FindProperty("Blob")!, dataTableMapping); RelationalModel.CreateColumnMapping(pointColumn, data.FindProperty("Point")!, dataTableMapping); - var pK_Data = new UniqueConstraint("PK_Data", dataTable, new[] { idColumn0 }); - dataTable.PrimaryKey = pK_Data; - pK_Data.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(pK_Data)); - var pK_DataKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+Data", - new[] { "Id" }); - pK_Data.MappedKeys.Add(pK_DataKey); - RelationalModel.GetOrCreateUniqueConstraints(pK_DataKey).Add(pK_Data); - dataTable.UniqueConstraints.Add("PK_Data", pK_Data); var dependentBase = FindEntityType("Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+DependentBase")!; @@ -276,24 +258,6 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(enumDiscriminatorColumn, dependentDerived.FindProperty("EnumDiscriminator")!, dependentBasebyteTableMapping0); RelationalModel.CreateColumnMapping(idColumn1, dependentDerived.FindProperty("Id")!, dependentBasebyteTableMapping0); RelationalModel.CreateColumnMapping(moneyColumn, dependentDerived.FindProperty("Money")!, dependentBasebyteTableMapping0); - var pK_DependentBasebyte = new UniqueConstraint("PK_DependentBase", dependentBasebyteTable, new[] { principalIdColumn, principalAlternateIdColumn }); - dependentBasebyteTable.PrimaryKey = pK_DependentBasebyte; - pK_DependentBasebyte.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_DependentBasebyte)); - var pK_DependentBasebyteKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+DependentBase", - new[] { "PrincipalId", "PrincipalAlternateId" }); - pK_DependentBasebyte.MappedKeys.Add(pK_DependentBasebyteKey); - RelationalModel.GetOrCreateUniqueConstraints(pK_DependentBasebyteKey).Add(pK_DependentBasebyte); - dependentBasebyteTable.UniqueConstraints.Add("PK_DependentBase", pK_DependentBasebyte); - var iX_DependentBasebyte_PrincipalId = new TableIndex( - "IX_DependentBase_PrincipalId", dependentBasebyteTable, new[] { principalIdColumn }, true); - iX_DependentBasebyte_PrincipalId.SetRowIndexValueFactory(new SimpleRowIndexValueFactory(iX_DependentBasebyte_PrincipalId)); - var iX_DependentBasebyte_PrincipalIdIx = RelationalModel.GetIndex(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+DependentBase", - new[] { "PrincipalId" }); - iX_DependentBasebyte_PrincipalId.MappedIndexes.Add(iX_DependentBasebyte_PrincipalIdIx); - RelationalModel.GetOrCreateTableIndexes(iX_DependentBasebyte_PrincipalIdIx).Add(iX_DependentBasebyte_PrincipalId); - dependentBasebyteTable.Indexes.Add("IX_DependentBase_PrincipalId", iX_DependentBasebyte_PrincipalId); var manyTypes = FindEntityType("Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes")!; @@ -3385,15 +3349,6 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateJsonElementMapping(manyTypes.FindProperty("UInt64Array")!, arrayJsonArray224, manyTypesTableMapping); RelationalModel.CreateJsonElementMapping(manyTypes.FindProperty("UInt8ReadOnlyCollection")!, arrayJsonArray225, manyTypesTableMapping); RelationalModel.CreateJsonElementMapping(manyTypes.FindProperty("UriArray")!, arrayJsonArray226, manyTypesTableMapping); - var pK_ManyTypes = new UniqueConstraint("PK_ManyTypes", manyTypesTable, new[] { idColumn2 }); - manyTypesTable.PrimaryKey = pK_ManyTypes; - pK_ManyTypes.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(pK_ManyTypes)); - var pK_ManyTypesKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes", - new[] { "Id" }); - pK_ManyTypes.MappedKeys.Add(pK_ManyTypesKey); - RelationalModel.GetOrCreateUniqueConstraints(pK_ManyTypesKey).Add(pK_ManyTypes); - manyTypesTable.UniqueConstraints.Add("PK_ManyTypes", pK_ManyTypes); var principalBase = FindEntityType("Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase")!; @@ -3839,15 +3794,6 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(principalBaseAlternateIdColumn, ownedType.FindProperty("PrincipalBaseAlternateId")!, detailsTableMapping); RelationalModel.CreateColumnMapping(principalBaseIdColumn, ownedType.FindProperty("PrincipalBaseId")!, detailsTableMapping); RelationalModel.CreateColumnMapping(detailsColumn, ownedType.FindProperty("Details")!, detailsTableMapping); - var pK_Details = new UniqueConstraint("PK_Details", detailsTable, new[] { principalBaseIdColumn, principalBaseAlternateIdColumn }); - detailsTable.PrimaryKey = pK_Details; - pK_Details.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_Details)); - var pK_DetailsKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase.Owned#OwnedType", - new[] { "PrincipalBaseId", "PrincipalBaseAlternateId" }); - pK_Details.MappedKeys.Add(pK_DetailsKey); - RelationalModel.GetOrCreateUniqueConstraints(pK_DetailsKey).Add(pK_Details); - detailsTable.UniqueConstraints.Add("PK_Details", pK_Details); var principalDerived = FindEntityType("Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalDerived>")!; @@ -3906,34 +3852,6 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(valueTypeEnumerableColumn, principalDerived.FindProperty("ValueTypeEnumerable")!, principalBaseTableMapping1); RelationalModel.CreateColumnMapping(valueTypeIListColumn, principalDerived.FindProperty("ValueTypeIList")!, principalBaseTableMapping1); RelationalModel.CreateColumnMapping(valueTypeListColumn, principalDerived.FindProperty("ValueTypeList")!, principalBaseTableMapping1); - var aK_PrincipalBase_Id = new UniqueConstraint("AK_PrincipalBase_Id", principalBaseTable, new[] { idColumn3 }); - aK_PrincipalBase_Id.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(aK_PrincipalBase_Id)); - var aK_PrincipalBase_IdKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase", - new[] { "Id" }); - aK_PrincipalBase_Id.MappedKeys.Add(aK_PrincipalBase_IdKey); - RelationalModel.GetOrCreateUniqueConstraints(aK_PrincipalBase_IdKey).Add(aK_PrincipalBase_Id); - principalBaseTable.UniqueConstraints.Add("AK_PrincipalBase_Id", aK_PrincipalBase_Id); - var pK = new UniqueConstraint("PK", principalBaseTable, new[] { idColumn3, alternateIdColumn }); - principalBaseTable.PrimaryKey = pK; - pK.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK)); - var pKKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase", - new[] { "Id", "AlternateId" }); - pK.MappedKeys.Add(pKKey); - RelationalModel.GetOrCreateUniqueConstraints(pKKey).Add(pK); - pK.MappedKeys.Add(pK_DetailsKey); - RelationalModel.GetOrCreateUniqueConstraints(pK_DetailsKey).Add(pK); - principalBaseTable.UniqueConstraints.Add("PK", pK); - var iX_PrincipalBase_AlternateId_Id = new TableIndex( - "IX_PrincipalBase_AlternateId_Id", principalBaseTable, new[] { alternateIdColumn, idColumn3 }, false); - iX_PrincipalBase_AlternateId_Id.SetRowIndexValueFactory(new CompositeRowIndexValueFactory(iX_PrincipalBase_AlternateId_Id)); - var iX_PrincipalBase_AlternateId_IdIx = RelationalModel.GetIndex(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase", - new[] { "AlternateId", "Id" }); - iX_PrincipalBase_AlternateId_Id.MappedIndexes.Add(iX_PrincipalBase_AlternateId_IdIx); - RelationalModel.GetOrCreateTableIndexes(iX_PrincipalBase_AlternateId_IdIx).Add(iX_PrincipalBase_AlternateId_Id); - principalBaseTable.Indexes.Add("IX_PrincipalBase_AlternateId_Id", iX_PrincipalBase_AlternateId_Id); var principalDerivedTable = new Table("PrincipalDerived", null, relationalModel); var derivedIdColumn = new Column("DerivedId", "INTEGER", principalDerivedTable); principalDerivedTable.Columns.Add("DerivedId", derivedIdColumn); @@ -3947,23 +3865,6 @@ private IRelationalModel CreateRelationalModel() tableMappings6.Add(principalDerivedTableMapping); RelationalModel.CreateColumnMapping(alternateIdColumn0, principalDerived.FindProperty("AlternateId")!, principalDerivedTableMapping); RelationalModel.CreateColumnMapping(derivedIdColumn, principalDerived.FindProperty("Id")!, principalDerivedTableMapping); - var aK_PrincipalDerived_DerivedId = new UniqueConstraint("AK_PrincipalDerived_DerivedId", principalDerivedTable, new[] { derivedIdColumn }); - aK_PrincipalDerived_DerivedId.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(aK_PrincipalDerived_DerivedId)); - aK_PrincipalDerived_DerivedId.MappedKeys.Add(aK_PrincipalBase_IdKey); - RelationalModel.GetOrCreateUniqueConstraints(aK_PrincipalBase_IdKey).Add(aK_PrincipalDerived_DerivedId); - principalDerivedTable.UniqueConstraints.Add("AK_PrincipalDerived_DerivedId", aK_PrincipalDerived_DerivedId); - var pK0 = new UniqueConstraint("PK", principalDerivedTable, new[] { derivedIdColumn, alternateIdColumn0 }); - principalDerivedTable.PrimaryKey = pK0; - pK0.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK0)); - pK0.MappedKeys.Add(pKKey); - RelationalModel.GetOrCreateUniqueConstraints(pKKey).Add(pK0); - principalDerivedTable.UniqueConstraints.Add("PK", pK0); - var iX_PrincipalDerived_AlternateId_DerivedId = new TableIndex( - "IX_PrincipalDerived_AlternateId_DerivedId", principalDerivedTable, new[] { alternateIdColumn0, derivedIdColumn }, false); - iX_PrincipalDerived_AlternateId_DerivedId.SetRowIndexValueFactory(new CompositeRowIndexValueFactory(iX_PrincipalDerived_AlternateId_DerivedId)); - iX_PrincipalDerived_AlternateId_DerivedId.MappedIndexes.Add(iX_PrincipalBase_AlternateId_IdIx); - RelationalModel.GetOrCreateTableIndexes(iX_PrincipalBase_AlternateId_IdIx).Add(iX_PrincipalDerived_AlternateId_DerivedId); - principalDerivedTable.Indexes.Add("IX_PrincipalDerived_AlternateId_DerivedId", iX_PrincipalDerived_AlternateId_DerivedId); var ownedType0 = FindEntityType("Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalDerived>.ManyOwned#OwnedType")!; @@ -4207,15 +4108,6 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateJsonElementMapping(ownedType0.FindProperty("ValueTypeEnumerable")!, arrayJsonArray264, manyOwnedTableMapping); RelationalModel.CreateJsonElementMapping(ownedType0.FindProperty("ValueTypeIList")!, arrayJsonArray265, manyOwnedTableMapping); RelationalModel.CreateJsonElementMapping(ownedType0.FindProperty("ValueTypeList")!, arrayJsonArray266, manyOwnedTableMapping); - var pK_ManyOwned = new UniqueConstraint("PK_ManyOwned", manyOwnedTable, new[] { principalDerivedDependentBasebyteIdColumn, principalDerivedDependentBasebyteAlternateIdColumn, idColumn4 }); - manyOwnedTable.PrimaryKey = pK_ManyOwned; - pK_ManyOwned.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_ManyOwned)); - var pK_ManyOwnedKey = RelationalModel.GetKey(this, - "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalDerived>.ManyOwned#OwnedType", - new[] { "PrincipalDerivedId", "PrincipalDerivedAlternateId", "Id" }); - pK_ManyOwned.MappedKeys.Add(pK_ManyOwnedKey); - RelationalModel.GetOrCreateUniqueConstraints(pK_ManyOwnedKey).Add(pK_ManyOwned); - manyOwnedTable.UniqueConstraints.Add("PK_ManyOwned", pK_ManyOwned); var principalBasePrincipalDerivedDependentBasebyte = FindEntityType("PrincipalBasePrincipalDerived>")!; @@ -4275,6 +4167,97 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(principalsAlternateIdColumn, principalBasePrincipalDerivedDependentBasebyte.FindProperty("PrincipalsAlternateId")!, principalBasePrincipalDerivedDependentBasebyteTableMapping); RelationalModel.CreateColumnMapping(principalsIdColumn, principalBasePrincipalDerivedDependentBasebyte.FindProperty("PrincipalsId")!, principalBasePrincipalDerivedDependentBasebyteTableMapping); RelationalModel.CreateColumnMapping(rowidColumn, principalBasePrincipalDerivedDependentBasebyte.FindProperty("rowid")!, principalBasePrincipalDerivedDependentBasebyteTableMapping); + var pK_AutoIncrementEntity = new UniqueConstraint("PK_AutoIncrementEntity", autoIncrementEntityTable, new[] { idColumn }); + autoIncrementEntityTable.PrimaryKey = pK_AutoIncrementEntity; + pK_AutoIncrementEntity.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(pK_AutoIncrementEntity)); + var pK_AutoIncrementEntityKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelSqliteTest+AutoIncrementEntity", + new[] { "Id" }); + pK_AutoIncrementEntity.MappedKeys.Add(pK_AutoIncrementEntityKey); + RelationalModel.GetOrCreateUniqueConstraints(pK_AutoIncrementEntityKey).Add(pK_AutoIncrementEntity); + autoIncrementEntityTable.UniqueConstraints.Add("PK_AutoIncrementEntity", pK_AutoIncrementEntity); + var pK_Data = new UniqueConstraint("PK_Data", dataTable, new[] { idColumn0 }); + dataTable.PrimaryKey = pK_Data; + pK_Data.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(pK_Data)); + var pK_DataKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+Data", + new[] { "Id" }); + pK_Data.MappedKeys.Add(pK_DataKey); + RelationalModel.GetOrCreateUniqueConstraints(pK_DataKey).Add(pK_Data); + dataTable.UniqueConstraints.Add("PK_Data", pK_Data); + var pK_DependentBasebyte = new UniqueConstraint("PK_DependentBase", dependentBasebyteTable, new[] { principalIdColumn, principalAlternateIdColumn }); + dependentBasebyteTable.PrimaryKey = pK_DependentBasebyte; + pK_DependentBasebyte.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_DependentBasebyte)); + var pK_DependentBasebyteKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+DependentBase", + new[] { "PrincipalId", "PrincipalAlternateId" }); + pK_DependentBasebyte.MappedKeys.Add(pK_DependentBasebyteKey); + RelationalModel.GetOrCreateUniqueConstraints(pK_DependentBasebyteKey).Add(pK_DependentBasebyte); + dependentBasebyteTable.UniqueConstraints.Add("PK_DependentBase", pK_DependentBasebyte); + var iX_DependentBasebyte_PrincipalId = new TableIndex( + "IX_DependentBase_PrincipalId", dependentBasebyteTable, new[] { principalIdColumn }, true); + iX_DependentBasebyte_PrincipalId.SetRowIndexValueFactory(new SimpleRowIndexValueFactory(iX_DependentBasebyte_PrincipalId)); + var iX_DependentBasebyte_PrincipalIdIx = RelationalModel.GetIndex(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+DependentBase", + new[] { "PrincipalId" }); + iX_DependentBasebyte_PrincipalId.MappedIndexes.Add(iX_DependentBasebyte_PrincipalIdIx); + RelationalModel.GetOrCreateTableIndexes(iX_DependentBasebyte_PrincipalIdIx).Add(iX_DependentBasebyte_PrincipalId); + dependentBasebyteTable.Indexes.Add("IX_DependentBase_PrincipalId", iX_DependentBasebyte_PrincipalId); + var pK_Details = new UniqueConstraint("PK_Details", detailsTable, new[] { principalBaseIdColumn, principalBaseAlternateIdColumn }); + detailsTable.PrimaryKey = pK_Details; + pK_Details.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_Details)); + var pK_DetailsKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase.Owned#OwnedType", + new[] { "PrincipalBaseId", "PrincipalBaseAlternateId" }); + pK_Details.MappedKeys.Add(pK_DetailsKey); + RelationalModel.GetOrCreateUniqueConstraints(pK_DetailsKey).Add(pK_Details); + detailsTable.UniqueConstraints.Add("PK_Details", pK_Details); + var pK_ManyOwned = new UniqueConstraint("PK_ManyOwned", manyOwnedTable, new[] { principalDerivedDependentBasebyteIdColumn, principalDerivedDependentBasebyteAlternateIdColumn, idColumn4 }); + manyOwnedTable.PrimaryKey = pK_ManyOwned; + pK_ManyOwned.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_ManyOwned)); + var pK_ManyOwnedKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalDerived>.ManyOwned#OwnedType", + new[] { "PrincipalDerivedId", "PrincipalDerivedAlternateId", "Id" }); + pK_ManyOwned.MappedKeys.Add(pK_ManyOwnedKey); + RelationalModel.GetOrCreateUniqueConstraints(pK_ManyOwnedKey).Add(pK_ManyOwned); + manyOwnedTable.UniqueConstraints.Add("PK_ManyOwned", pK_ManyOwned); + var pK_ManyTypes = new UniqueConstraint("PK_ManyTypes", manyTypesTable, new[] { idColumn2 }); + manyTypesTable.PrimaryKey = pK_ManyTypes; + pK_ManyTypes.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(pK_ManyTypes)); + var pK_ManyTypesKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes", + new[] { "Id" }); + pK_ManyTypes.MappedKeys.Add(pK_ManyTypesKey); + RelationalModel.GetOrCreateUniqueConstraints(pK_ManyTypesKey).Add(pK_ManyTypes); + manyTypesTable.UniqueConstraints.Add("PK_ManyTypes", pK_ManyTypes); + var aK_PrincipalBase_Id = new UniqueConstraint("AK_PrincipalBase_Id", principalBaseTable, new[] { idColumn3 }); + aK_PrincipalBase_Id.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(aK_PrincipalBase_Id)); + var aK_PrincipalBase_IdKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase", + new[] { "Id" }); + aK_PrincipalBase_Id.MappedKeys.Add(aK_PrincipalBase_IdKey); + RelationalModel.GetOrCreateUniqueConstraints(aK_PrincipalBase_IdKey).Add(aK_PrincipalBase_Id); + principalBaseTable.UniqueConstraints.Add("AK_PrincipalBase_Id", aK_PrincipalBase_Id); + var pK = new UniqueConstraint("PK", principalBaseTable, new[] { idColumn3, alternateIdColumn }); + principalBaseTable.PrimaryKey = pK; + pK.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK)); + var pKKey = RelationalModel.GetKey(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase", + new[] { "Id", "AlternateId" }); + pK.MappedKeys.Add(pKKey); + RelationalModel.GetOrCreateUniqueConstraints(pKKey).Add(pK); + pK.MappedKeys.Add(pK_DetailsKey); + RelationalModel.GetOrCreateUniqueConstraints(pK_DetailsKey).Add(pK); + principalBaseTable.UniqueConstraints.Add("PK", pK); + var iX_PrincipalBase_AlternateId_Id = new TableIndex( + "IX_PrincipalBase_AlternateId_Id", principalBaseTable, new[] { alternateIdColumn, idColumn3 }, false); + iX_PrincipalBase_AlternateId_Id.SetRowIndexValueFactory(new CompositeRowIndexValueFactory(iX_PrincipalBase_AlternateId_Id)); + var iX_PrincipalBase_AlternateId_IdIx = RelationalModel.GetIndex(this, + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+PrincipalBase", + new[] { "AlternateId", "Id" }); + iX_PrincipalBase_AlternateId_Id.MappedIndexes.Add(iX_PrincipalBase_AlternateId_IdIx); + RelationalModel.GetOrCreateTableIndexes(iX_PrincipalBase_AlternateId_IdIx).Add(iX_PrincipalBase_AlternateId_Id); + principalBaseTable.Indexes.Add("IX_PrincipalBase_AlternateId_Id", iX_PrincipalBase_AlternateId_Id); var pK_PrincipalBasePrincipalDerivedDependentBasebyte = new UniqueConstraint("PK_PrincipalBasePrincipalDerived>", principalBasePrincipalDerivedDependentBasebyteTable, new[] { derivedsIdColumn, derivedsAlternateIdColumn, principalsIdColumn, principalsAlternateIdColumn }); principalBasePrincipalDerivedDependentBasebyteTable.PrimaryKey = pK_PrincipalBasePrincipalDerivedDependentBasebyte; pK_PrincipalBasePrincipalDerivedDependentBasebyte.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK_PrincipalBasePrincipalDerivedDependentBasebyte)); @@ -4293,6 +4276,23 @@ private IRelationalModel CreateRelationalModel() iX_PrincipalBasePrincipalDerivedDependentBasebyte_PrincipalsId_PrincipalsAlternateId.MappedIndexes.Add(iX_PrincipalBasePrincipalDerivedDependentBasebyte_PrincipalsId_PrincipalsAlternateIdIx); RelationalModel.GetOrCreateTableIndexes(iX_PrincipalBasePrincipalDerivedDependentBasebyte_PrincipalsId_PrincipalsAlternateIdIx).Add(iX_PrincipalBasePrincipalDerivedDependentBasebyte_PrincipalsId_PrincipalsAlternateId); principalBasePrincipalDerivedDependentBasebyteTable.Indexes.Add("IX_PrincipalBasePrincipalDerived>_PrincipalsId_PrincipalsAlternateId", iX_PrincipalBasePrincipalDerivedDependentBasebyte_PrincipalsId_PrincipalsAlternateId); + var aK_PrincipalDerived_DerivedId = new UniqueConstraint("AK_PrincipalDerived_DerivedId", principalDerivedTable, new[] { derivedIdColumn }); + aK_PrincipalDerived_DerivedId.SetRowKeyValueFactory(new SimpleRowKeyValueFactory(aK_PrincipalDerived_DerivedId)); + aK_PrincipalDerived_DerivedId.MappedKeys.Add(aK_PrincipalBase_IdKey); + RelationalModel.GetOrCreateUniqueConstraints(aK_PrincipalBase_IdKey).Add(aK_PrincipalDerived_DerivedId); + principalDerivedTable.UniqueConstraints.Add("AK_PrincipalDerived_DerivedId", aK_PrincipalDerived_DerivedId); + var pK0 = new UniqueConstraint("PK", principalDerivedTable, new[] { derivedIdColumn, alternateIdColumn0 }); + principalDerivedTable.PrimaryKey = pK0; + pK0.SetRowKeyValueFactory(new CompositeRowKeyValueFactory(pK0)); + pK0.MappedKeys.Add(pKKey); + RelationalModel.GetOrCreateUniqueConstraints(pKKey).Add(pK0); + principalDerivedTable.UniqueConstraints.Add("PK", pK0); + var iX_PrincipalDerived_AlternateId_DerivedId = new TableIndex( + "IX_PrincipalDerived_AlternateId_DerivedId", principalDerivedTable, new[] { alternateIdColumn0, derivedIdColumn }, false); + iX_PrincipalDerived_AlternateId_DerivedId.SetRowIndexValueFactory(new CompositeRowIndexValueFactory(iX_PrincipalDerived_AlternateId_DerivedId)); + iX_PrincipalDerived_AlternateId_DerivedId.MappedIndexes.Add(iX_PrincipalBase_AlternateId_IdIx); + RelationalModel.GetOrCreateTableIndexes(iX_PrincipalBase_AlternateId_IdIx).Add(iX_PrincipalDerived_AlternateId_DerivedId); + principalDerivedTable.Indexes.Add("IX_PrincipalDerived_AlternateId_DerivedId", iX_PrincipalDerived_AlternateId_DerivedId); var fK_DependentBasebyte_PrincipalBase_PrincipalId = new ForeignKeyConstraint( "FK_DependentBase_PrincipalBase_PrincipalId", dependentBasebyteTable, principalBaseTable, new[] { principalIdColumn }, diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs index 9672e1e01ec..6bf258b4c2c 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs @@ -30,7 +30,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas typeof(CompiledModelTestBase.DependentBase), baseEntityType, discriminatorProperty: "EnumDiscriminator", - discriminatorValue: CompiledModelTestBase.Enum1.One, derivedTypesCount: 1, propertyCount: 4, navigationCount: 1, @@ -38,6 +37,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas unnamedIndexCount: 1, keyCount: 1); + runtimeEntityType.SetDiscriminatorValueFromProviderValue(1); + var principalId = runtimeEntityType.AddProperty( "PrincipalId", typeof(long), @@ -55,18 +56,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); principalId.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); @@ -107,24 +96,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumDiscriminator.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum1 value) => ((int)value), CompiledModelTestBase.Enum1 (int value) => ((CompiledModelTestBase.Enum1)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum1 value) => ((int)value), CompiledModelTestBase.Enum1 (int value) => ((CompiledModelTestBase.Enum1)value)))); + EnumToNumberConverter.Instance)); enumDiscriminator.SetSentinelFromProviderValue(0); var id = runtimeEntityType.AddProperty( @@ -160,22 +139,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); id.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var key = runtimeEntityType.AddKey( new[] { principalId, principalAlternateId }); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs index 2505a20a03c..cf380357427 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs @@ -25,9 +25,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas typeof(CompiledModelTestBase.DependentDerived), baseEntityType, discriminatorProperty: "EnumDiscriminator", - discriminatorValue: CompiledModelTestBase.Enum1.Two, propertyCount: 2); + runtimeEntityType.SetDiscriminatorValueFromProviderValue(2); + var data = runtimeEntityType.AddProperty( "Data", typeof(string), diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs index 4bf2b08ba62..6d694214b90 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs @@ -1,9 +1,7 @@ // using System; -using System.Collections; using System.Collections.Generic; using System.Globalization; -using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Reflection; @@ -73,18 +71,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.ManyTypesId v1, CompiledModelTestBase.ManyTypesId v2) => v1.Equals(v2), - int (CompiledModelTestBase.ManyTypesId v) => ((object)v).GetHashCode(), - CompiledModelTestBase.ManyTypesId (CompiledModelTestBase.ManyTypesId v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.ManyTypesId v1, CompiledModelTestBase.ManyTypesId v2) => v1.Equals(v2), - int (CompiledModelTestBase.ManyTypesId v) => ((object)v).GetHashCode(), - CompiledModelTestBase.ManyTypesId (CompiledModelTestBase.ManyTypesId v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(int (CompiledModelTestBase.ManyTypesId v) => v.Id, CompiledModelTestBase.ManyTypesId (int v) => new CompiledModelTestBase.ManyTypesId(v)), @@ -127,18 +115,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); @bool.TypeMapping = BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -174,35 +150,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance), elementMapping: BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var boolArrayElementType = boolArray.SetElementType(typeof(bool)); @@ -240,35 +194,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, bool>(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ListOfValueTypesComparer, bool>(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, bool>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, bool>( JsonBoolReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, bool>( JsonBoolReaderWriter.Instance), elementMapping: BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var boolReadOnlyCollectionElementType = boolReadOnlyCollection.SetElementType(typeof(bool)); @@ -306,18 +238,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 1), converter: new ValueConverter(string (bool v) => ((string)((v ? "B" : "A"))), bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))), @@ -358,18 +280,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolToTwoValuesConverterProperty.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(byte (bool v) => ((byte)((v ? 1 : 0))), bool (byte v) => v == 1), @@ -411,18 +323,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolToZeroOneConverterProperty.TypeMapping = ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(short (bool v) => ((short)((v ? 1 : 0))), bool (short v) => v == 1), @@ -463,18 +365,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); bytes.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var bytesArray = runtimeEntityType.AddProperty( "BytesArray", @@ -508,35 +399,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); bytesArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( SqliteJsonByteArrayReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( SqliteJsonByteArrayReaderWriter.Instance), elementMapping: SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()))); + )); var bytesArrayElementType = bytesArray.SetElementType(typeof(byte[])); bytesArrayElementType.TypeMapping = bytesArray.TypeMapping.ElementTypeMapping; @@ -574,18 +444,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); bytesToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + keyComparer: ValueComparer.DefaultWithStructuralComparisons, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (byte[] v) => Convert.ToBase64String(v), byte[] (string v) => Convert.FromBase64String(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, @@ -624,18 +485,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); castingConverterProperty.TypeMapping = SqliteDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(decimal (int v) => ((decimal)v), int (decimal v) => ((int)v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( SqliteJsonDecimalReaderWriter.Instance, @@ -675,18 +526,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); @char.TypeMapping = CharTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT")); @@ -722,35 +561,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); charArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance), elementMapping: CharTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT"))); var charArrayElementType = charArray.SetElementType(typeof(char)); @@ -789,18 +606,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); charToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 1), converter: new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])), @@ -875,18 +682,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateOnlyArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateOnlyReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -928,18 +725,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateOnlyToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 10), converter: new ValueConverter(string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd"), DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)), @@ -1014,18 +801,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( SqliteJsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -1067,18 +844,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeOffsetToBinaryConverterProperty.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(long (DateTimeOffset v) => DateTimeOffsetToBinaryConverter.ToLong(v), DateTimeOffset (long v) => DateTimeOffsetToBinaryConverter.ToDateTimeOffset(v)), @@ -1120,18 +887,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeOffsetToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 12), converter: new ValueConverter(byte[] (DateTimeOffset v) => DateTimeOffsetToBytesConverter.ToBytes(v), DateTimeOffset (byte[] v) => DateTimeOffsetToBytesConverter.FromBytes(v)), @@ -1173,18 +930,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeOffsetToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz"), DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture)), @@ -1226,18 +973,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeToBinaryConverterProperty.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(long (DateTime v) => v.ToBinary(), DateTime (long v) => DateTime.FromBinary(v)), @@ -1279,18 +1016,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF"), DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture)), @@ -1399,18 +1126,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); decimalArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( SqliteJsonDecimalReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -1452,18 +1169,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); decimalNumberToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 16), converter: new ValueConverter(byte[] (decimal v) => NumberToBytesConverter.DecimalToBytes(v), decimal (byte[] v) => (v == null ? 0M : NumberToBytesConverter.BytesToDecimal(v))), @@ -1505,18 +1212,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); decimalNumberToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), @@ -1558,18 +1255,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); @double.TypeMapping = DoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL")); @@ -1605,35 +1290,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); doubleArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultDoubleValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDoubleReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDoubleReaderWriter.Instance), elementMapping: DoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL"))); var doubleArrayElementType = doubleArray.SetElementType(typeof(double)); @@ -1672,18 +1335,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); doubleNumberToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultDoubleValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 8), converter: new ValueConverter(byte[] (double v) => NumberToBytesConverter.ReverseLong(BitConverter.GetBytes(v)), double (byte[] v) => (v == null ? 0D : BitConverter.ToDouble(NumberToBytesConverter.ReverseLong(v), 0))), @@ -1725,18 +1378,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); doubleNumberToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultDoubleValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v)), double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), @@ -1777,24 +1420,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16.TypeMapping = ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); enum16.SetSentinelFromProviderValue((short)0); var enum16Array = runtimeEntityType.AddProperty( @@ -1829,45 +1462,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var enum16ArrayElementType = enum16Array.SetElementType(typeof(CompiledModelTestBase.Enum16)); enum16ArrayElementType.TypeMapping = enum16Array.TypeMapping.ElementTypeMapping; @@ -1904,22 +1517,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum16AsString.SetSentinelFromProviderValue("Default"); var enum16AsStringArray = runtimeEntityType.AddProperty( @@ -1954,43 +1557,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum16AsStringArrayElementType = enum16AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum16), providerClrType: typeof(string)); enum16AsStringArrayElementType.TypeMapping = enum16AsStringArray.TypeMapping.ElementTypeMapping; @@ -2027,43 +1610,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum16AsStringCollectionElementType = enum16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum16), providerClrType: typeof(string)); enum16AsStringCollectionElementType.TypeMapping = enum16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -2100,45 +1663,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var enum16CollectionElementType = enum16Collection.SetElementType(typeof(CompiledModelTestBase.Enum16)); enum16CollectionElementType.TypeMapping = enum16Collection.TypeMapping.ElementTypeMapping; @@ -2174,24 +1717,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); enum32.SetSentinelFromProviderValue(0); var enum32Array = runtimeEntityType.AddProperty( @@ -2226,45 +1759,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var enum32ArrayElementType = enum32Array.SetElementType(typeof(CompiledModelTestBase.Enum32)); enum32ArrayElementType.TypeMapping = enum32Array.TypeMapping.ElementTypeMapping; @@ -2301,22 +1814,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum32AsString.SetSentinelFromProviderValue("Default"); var enum32AsStringArray = runtimeEntityType.AddProperty( @@ -2351,43 +1854,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum32AsStringArrayElementType = enum32AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum32), providerClrType: typeof(string)); enum32AsStringArrayElementType.TypeMapping = enum32AsStringArray.TypeMapping.ElementTypeMapping; @@ -2424,43 +1907,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum32AsStringCollectionElementType = enum32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum32), providerClrType: typeof(string)); enum32AsStringCollectionElementType.TypeMapping = enum32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -2497,45 +1960,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var enum32CollectionElementType = enum32Collection.SetElementType(typeof(CompiledModelTestBase.Enum32)); enum32CollectionElementType.TypeMapping = enum32Collection.TypeMapping.ElementTypeMapping; @@ -2571,24 +2014,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); enum64.SetSentinelFromProviderValue(0L); var enum64Array = runtimeEntityType.AddProperty( @@ -2623,45 +2056,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var enum64ArrayElementType = enum64Array.SetElementType(typeof(CompiledModelTestBase.Enum64)); enum64ArrayElementType.TypeMapping = enum64Array.TypeMapping.ElementTypeMapping; @@ -2698,22 +2111,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum64AsString.SetSentinelFromProviderValue("Default"); var enum64AsStringArray = runtimeEntityType.AddProperty( @@ -2748,43 +2151,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum64AsStringArrayElementType = enum64AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum64), providerClrType: typeof(string)); enum64AsStringArrayElementType.TypeMapping = enum64AsStringArray.TypeMapping.ElementTypeMapping; @@ -2821,43 +2204,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum64AsStringCollectionElementType = enum64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum64), providerClrType: typeof(string)); enum64AsStringCollectionElementType.TypeMapping = enum64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -2894,45 +2257,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var enum64CollectionElementType = enum64Collection.SetElementType(typeof(CompiledModelTestBase.Enum64)); enum64CollectionElementType.TypeMapping = enum64Collection.TypeMapping.ElementTypeMapping; @@ -2968,24 +2311,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8.TypeMapping = SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); enum8.SetSentinelFromProviderValue((sbyte)0); var enum8Array = runtimeEntityType.AddProperty( @@ -3020,45 +2353,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var enum8ArrayElementType = enum8Array.SetElementType(typeof(CompiledModelTestBase.Enum8)); enum8ArrayElementType.TypeMapping = enum8Array.TypeMapping.ElementTypeMapping; @@ -3095,22 +2408,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum8AsString.SetSentinelFromProviderValue("Default"); var enum8AsStringArray = runtimeEntityType.AddProperty( @@ -3145,43 +2448,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum8AsStringArrayElementType = enum8AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum8), providerClrType: typeof(string)); enum8AsStringArrayElementType.TypeMapping = enum8AsStringArray.TypeMapping.ElementTypeMapping; @@ -3218,43 +2501,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum8AsStringCollectionElementType = enum8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum8), providerClrType: typeof(string)); enum8AsStringCollectionElementType.TypeMapping = enum8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -3291,45 +2554,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var enum8CollectionElementType = enum8Collection.SetElementType(typeof(CompiledModelTestBase.Enum8)); enum8CollectionElementType.TypeMapping = enum8Collection.TypeMapping.ElementTypeMapping; @@ -3366,18 +2609,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumToNumberConverterProperty.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), @@ -3419,18 +2652,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, @@ -3469,24 +2692,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16.TypeMapping = UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); enumU16.SetSentinelFromProviderValue((ushort)0); var enumU16Array = runtimeEntityType.AddProperty( @@ -3521,45 +2734,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var enumU16ArrayElementType = enumU16Array.SetElementType(typeof(CompiledModelTestBase.EnumU16)); enumU16ArrayElementType.TypeMapping = enumU16Array.TypeMapping.ElementTypeMapping; @@ -3596,22 +2789,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU16AsString.SetSentinelFromProviderValue("Min"); var enumU16AsStringArray = runtimeEntityType.AddProperty( @@ -3646,43 +2829,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU16AsStringArrayElementType = enumU16AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU16), providerClrType: typeof(string)); enumU16AsStringArrayElementType.TypeMapping = enumU16AsStringArray.TypeMapping.ElementTypeMapping; @@ -3719,43 +2882,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU16AsStringCollectionElementType = enumU16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU16), providerClrType: typeof(string)); enumU16AsStringCollectionElementType.TypeMapping = enumU16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -3792,45 +2935,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var enumU16CollectionElementType = enumU16Collection.SetElementType(typeof(CompiledModelTestBase.EnumU16)); enumU16CollectionElementType.TypeMapping = enumU16Collection.TypeMapping.ElementTypeMapping; @@ -3866,24 +2989,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32.TypeMapping = UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); enumU32.SetSentinelFromProviderValue(0u); var enumU32Array = runtimeEntityType.AddProperty( @@ -3918,45 +3031,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var enumU32ArrayElementType = enumU32Array.SetElementType(typeof(CompiledModelTestBase.EnumU32)); enumU32ArrayElementType.TypeMapping = enumU32Array.TypeMapping.ElementTypeMapping; @@ -3993,22 +3086,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU32AsString.SetSentinelFromProviderValue("Min"); var enumU32AsStringArray = runtimeEntityType.AddProperty( @@ -4043,43 +3126,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU32AsStringArrayElementType = enumU32AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU32), providerClrType: typeof(string)); enumU32AsStringArrayElementType.TypeMapping = enumU32AsStringArray.TypeMapping.ElementTypeMapping; @@ -4116,43 +3179,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU32AsStringCollectionElementType = enumU32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU32), providerClrType: typeof(string)); enumU32AsStringCollectionElementType.TypeMapping = enumU32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -4189,45 +3232,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var enumU32CollectionElementType = enumU32Collection.SetElementType(typeof(CompiledModelTestBase.EnumU32)); enumU32CollectionElementType.TypeMapping = enumU32Collection.TypeMapping.ElementTypeMapping; @@ -4263,22 +3286,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64.TypeMapping = SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))); + EnumToNumberConverter.Instance)); enumU64.SetSentinelFromProviderValue(0ul); var enumU64Array = runtimeEntityType.AddProperty( @@ -4313,43 +3326,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))); + EnumToNumberConverter.Instance))); var enumU64ArrayElementType = enumU64Array.SetElementType(typeof(CompiledModelTestBase.EnumU64)); enumU64ArrayElementType.TypeMapping = enumU64Array.TypeMapping.ElementTypeMapping; @@ -4386,22 +3379,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU64AsString.SetSentinelFromProviderValue("Min"); var enumU64AsStringArray = runtimeEntityType.AddProperty( @@ -4436,43 +3419,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU64AsStringArrayElementType = enumU64AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU64), providerClrType: typeof(string)); enumU64AsStringArrayElementType.TypeMapping = enumU64AsStringArray.TypeMapping.ElementTypeMapping; @@ -4509,43 +3472,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU64AsStringCollectionElementType = enumU64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU64), providerClrType: typeof(string)); enumU64AsStringCollectionElementType.TypeMapping = enumU64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -4582,43 +3525,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))); + EnumToNumberConverter.Instance))); var enumU64CollectionElementType = enumU64Collection.SetElementType(typeof(CompiledModelTestBase.EnumU64)); enumU64CollectionElementType.TypeMapping = enumU64Collection.TypeMapping.ElementTypeMapping; @@ -4654,24 +3577,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); enumU8.SetSentinelFromProviderValue((byte)0); var enumU8Array = runtimeEntityType.AddProperty( @@ -4706,45 +3619,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var enumU8ArrayElementType = enumU8Array.SetElementType(typeof(CompiledModelTestBase.EnumU8)); enumU8ArrayElementType.TypeMapping = enumU8Array.TypeMapping.ElementTypeMapping; @@ -4781,22 +3674,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU8AsString.SetSentinelFromProviderValue("Min"); var enumU8AsStringArray = runtimeEntityType.AddProperty( @@ -4831,43 +3714,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU8AsStringArrayElementType = enumU8AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU8), providerClrType: typeof(string)); enumU8AsStringArrayElementType.TypeMapping = enumU8AsStringArray.TypeMapping.ElementTypeMapping; @@ -4904,43 +3767,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU8AsStringCollectionElementType = enumU8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU8), providerClrType: typeof(string)); enumU8AsStringCollectionElementType.TypeMapping = enumU8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -4977,45 +3820,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var enumU8CollectionElementType = enumU8Collection.SetElementType(typeof(CompiledModelTestBase.EnumU8)); enumU8CollectionElementType.TypeMapping = enumU8Collection.TypeMapping.ElementTypeMapping; @@ -5052,18 +3875,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); @float.TypeMapping = FloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL")); @@ -5099,35 +3910,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); floatArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultFloatValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonFloatReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonFloatReaderWriter.Instance), elementMapping: FloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL"))); var floatArrayElementType = floatArray.SetElementType(typeof(float)); @@ -5199,18 +3988,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guidArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( SqliteJsonGuidReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -5252,18 +4031,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guidToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 16), converter: new ValueConverter(byte[] (Guid v) => v.ToByteArray(), Guid (byte[] v) => new Guid(v)), @@ -5305,18 +4074,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guidToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 36), converter: new ValueConverter(string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)), @@ -5357,24 +4116,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddress.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))); + IPAddressToStringConverter.Instance)); var iPAddressArray = runtimeEntityType.AddProperty( "IPAddressArray", @@ -5408,45 +4157,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var iPAddressArrayElementType = iPAddressArray.SetElementType(typeof(IPAddress)); iPAddressArrayElementType.TypeMapping = iPAddressArray.TypeMapping.ElementTypeMapping; @@ -5482,45 +4211,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var iPAddressReadOnlyCollectionElementType = iPAddressReadOnlyCollection.SetElementType(typeof(IPAddress), providerClrType: typeof(string)); iPAddressReadOnlyCollectionElementType.TypeMapping = iPAddressReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -5558,18 +4267,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: ValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 16), converter: new ValueConverter(byte[] (IPAddress v) => v.GetAddressBytes(), IPAddress (byte[] v) => new IPAddress(v)), @@ -5610,18 +4309,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), @@ -5662,18 +4351,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int16.TypeMapping = ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -5709,35 +4386,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt16ReaderWriter.Instance), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var int16ArrayElementType = int16Array.SetElementType(typeof(short)); @@ -5776,18 +4431,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -5823,35 +4466,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var int32ArrayElementType = int32Array.SetElementType(typeof(int)); @@ -5889,35 +4510,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int32ReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ListOfValueTypesComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, int>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, int>( JsonInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, int>( JsonInt32ReaderWriter.Instance), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var int32ReadOnlyCollectionElementType = int32ReadOnlyCollection.SetElementType(typeof(int)); @@ -5956,18 +4555,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int64.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -6003,35 +4590,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var int64ArrayElementType = int64Array.SetElementType(typeof(long)); @@ -6070,18 +4635,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int8.TypeMapping = SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -6117,35 +4670,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var int8ArrayElementType = int8Array.SetElementType(typeof(sbyte)); @@ -6184,18 +4715,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); intNumberToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 4), converter: new ValueConverter(byte[] (int v) => NumberToBytesConverter.ReverseInt(BitConverter.GetBytes(v)), int (byte[] v) => (v == null ? 0 : BitConverter.ToInt32(NumberToBytesConverter.ReverseInt((v.Length == 0 ? new byte[4] : v)), 0))), @@ -6237,18 +4758,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); intNumberToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), @@ -6291,18 +4802,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullIntToNullStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int? v1, int? v2) => v1 == v2, - int (int? v) => ((int)v), - int? (int? v) => v), - keyComparer: new ValueComparer( - bool (int? v1, int? v2) => v1 == v2, - int (int? v) => ((int)v), - int? (int? v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (int? v) => (v == null ? null : ((object)v).ToString()), int? (string v) => (v == null || v == "" ? null : ((int? )(int.Parse(v)))), true), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, @@ -6341,22 +4842,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBool.TypeMapping = BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableBool.SetComparer(new NullableValueComparer(nullableBool.TypeMapping.Comparer)); - nullableBool.SetKeyComparer(new NullableValueComparer(nullableBool.TypeMapping.KeyComparer)); var nullableBoolArray = runtimeEntityType.AddProperty( "NullableBoolArray", @@ -6390,35 +4878,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBoolArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonBoolReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonBoolReaderWriter.Instance), elementMapping: BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableBoolArrayElementType = nullableBoolArray.SetElementType(typeof(bool?), @@ -6459,18 +4925,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBytes.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var nullableBytesArray = runtimeEntityType.AddProperty( "NullableBytesArray", @@ -6504,35 +4959,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBytesArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( SqliteJsonByteArrayReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( SqliteJsonByteArrayReaderWriter.Instance), elementMapping: SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()))); + )); var nullableBytesArrayElementType = nullableBytesArray.SetElementType(typeof(byte[]), nullable: true); nullableBytesArrayElementType.TypeMapping = nullableBytesArray.TypeMapping.ElementTypeMapping; @@ -6570,22 +5004,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableChar.TypeMapping = CharTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT")); nullableChar.SetComparer(new NullableValueComparer(nullableChar.TypeMapping.Comparer)); - nullableChar.SetKeyComparer(new NullableValueComparer(nullableChar.TypeMapping.KeyComparer)); var nullableCharArray = runtimeEntityType.AddProperty( "NullableCharArray", @@ -6619,35 +5040,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableCharArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonCharReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonCharReaderWriter.Instance), elementMapping: CharTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT"))); var nullableCharArrayElementType = nullableCharArray.SetElementType(typeof(char?), @@ -6689,7 +5088,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableDateOnly.TypeMapping = SqliteDateOnlyTypeMapping.Default; nullableDateOnly.SetComparer(new NullableValueComparer(nullableDateOnly.TypeMapping.Comparer)); - nullableDateOnly.SetKeyComparer(new NullableValueComparer(nullableDateOnly.TypeMapping.KeyComparer)); var nullableDateOnlyArray = runtimeEntityType.AddProperty( "NullableDateOnlyArray", @@ -6723,18 +5121,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDateOnlyArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonDateOnlyReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( @@ -6779,7 +5167,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableDateTime.TypeMapping = SqliteDateTimeTypeMapping.Default; nullableDateTime.SetComparer(new NullableValueComparer(nullableDateTime.TypeMapping.Comparer)); - nullableDateTime.SetKeyComparer(new NullableValueComparer(nullableDateTime.TypeMapping.KeyComparer)); var nullableDateTimeArray = runtimeEntityType.AddProperty( "NullableDateTimeArray", @@ -6813,18 +5200,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDateTimeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( SqliteJsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( @@ -6869,7 +5246,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableDecimal.TypeMapping = SqliteDecimalTypeMapping.Default; nullableDecimal.SetComparer(new NullableValueComparer(nullableDecimal.TypeMapping.Comparer)); - nullableDecimal.SetKeyComparer(new NullableValueComparer(nullableDecimal.TypeMapping.KeyComparer)); var nullableDecimalArray = runtimeEntityType.AddProperty( "NullableDecimalArray", @@ -6903,18 +5279,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDecimalArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( SqliteJsonDecimalReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( @@ -6958,22 +5324,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDouble.TypeMapping = DoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL")); nullableDouble.SetComparer(new NullableValueComparer(nullableDouble.TypeMapping.Comparer)); - nullableDouble.SetKeyComparer(new NullableValueComparer(nullableDouble.TypeMapping.KeyComparer)); var nullableDoubleArray = runtimeEntityType.AddProperty( "NullableDoubleArray", @@ -7007,35 +5360,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDoubleArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultDoubleValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonDoubleReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDoubleReaderWriter.Instance), elementMapping: DoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL"))); var nullableDoubleArrayElementType = nullableDoubleArray.SetElementType(typeof(double?), @@ -7076,26 +5407,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16.TypeMapping = ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); nullableEnum16.SetComparer(new NullableValueComparer(nullableEnum16.TypeMapping.Comparer)); - nullableEnum16.SetKeyComparer(new NullableValueComparer(nullableEnum16.TypeMapping.KeyComparer)); var nullableEnum16Array = runtimeEntityType.AddProperty( "NullableEnum16Array", @@ -7129,45 +5449,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16ArrayElementType = nullableEnum16Array.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16ArrayElementType.TypeMapping = nullableEnum16Array.TypeMapping.ElementTypeMapping; @@ -7206,26 +5506,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16AsString.TypeMapping = ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); nullableEnum16AsString.SetComparer(new NullableValueComparer(nullableEnum16AsString.TypeMapping.Comparer)); - nullableEnum16AsString.SetKeyComparer(new NullableValueComparer(nullableEnum16AsString.TypeMapping.KeyComparer)); var nullableEnum16AsStringArray = runtimeEntityType.AddProperty( "NullableEnum16AsStringArray", @@ -7259,45 +5548,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16AsStringArrayElementType = nullableEnum16AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16AsStringArrayElementType.TypeMapping = nullableEnum16AsStringArray.TypeMapping.ElementTypeMapping; @@ -7335,45 +5604,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16AsStringCollectionElementType = nullableEnum16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16AsStringCollectionElementType.TypeMapping = nullableEnum16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -7411,45 +5660,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16CollectionElementType = nullableEnum16Collection.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16CollectionElementType.TypeMapping = nullableEnum16Collection.TypeMapping.ElementTypeMapping; @@ -7488,26 +5717,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); nullableEnum32.SetComparer(new NullableValueComparer(nullableEnum32.TypeMapping.Comparer)); - nullableEnum32.SetKeyComparer(new NullableValueComparer(nullableEnum32.TypeMapping.KeyComparer)); var nullableEnum32Array = runtimeEntityType.AddProperty( "NullableEnum32Array", @@ -7541,45 +5759,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32ArrayElementType = nullableEnum32Array.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32ArrayElementType.TypeMapping = nullableEnum32Array.TypeMapping.ElementTypeMapping; @@ -7618,26 +5816,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32AsString.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); nullableEnum32AsString.SetComparer(new NullableValueComparer(nullableEnum32AsString.TypeMapping.Comparer)); - nullableEnum32AsString.SetKeyComparer(new NullableValueComparer(nullableEnum32AsString.TypeMapping.KeyComparer)); var nullableEnum32AsStringArray = runtimeEntityType.AddProperty( "NullableEnum32AsStringArray", @@ -7671,45 +5858,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32AsStringArrayElementType = nullableEnum32AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32AsStringArrayElementType.TypeMapping = nullableEnum32AsStringArray.TypeMapping.ElementTypeMapping; @@ -7747,45 +5914,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32AsStringCollectionElementType = nullableEnum32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32AsStringCollectionElementType.TypeMapping = nullableEnum32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -7823,45 +5970,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32CollectionElementType = nullableEnum32Collection.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32CollectionElementType.TypeMapping = nullableEnum32Collection.TypeMapping.ElementTypeMapping; @@ -7900,26 +6027,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); nullableEnum64.SetComparer(new NullableValueComparer(nullableEnum64.TypeMapping.Comparer)); - nullableEnum64.SetKeyComparer(new NullableValueComparer(nullableEnum64.TypeMapping.KeyComparer)); var nullableEnum64Array = runtimeEntityType.AddProperty( "NullableEnum64Array", @@ -7953,45 +6069,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64ArrayElementType = nullableEnum64Array.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64ArrayElementType.TypeMapping = nullableEnum64Array.TypeMapping.ElementTypeMapping; @@ -8030,26 +6126,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64AsString.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); nullableEnum64AsString.SetComparer(new NullableValueComparer(nullableEnum64AsString.TypeMapping.Comparer)); - nullableEnum64AsString.SetKeyComparer(new NullableValueComparer(nullableEnum64AsString.TypeMapping.KeyComparer)); var nullableEnum64AsStringArray = runtimeEntityType.AddProperty( "NullableEnum64AsStringArray", @@ -8083,45 +6168,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64AsStringArrayElementType = nullableEnum64AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64AsStringArrayElementType.TypeMapping = nullableEnum64AsStringArray.TypeMapping.ElementTypeMapping; @@ -8159,45 +6224,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64AsStringCollectionElementType = nullableEnum64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64AsStringCollectionElementType.TypeMapping = nullableEnum64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -8235,45 +6280,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64CollectionElementType = nullableEnum64Collection.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64CollectionElementType.TypeMapping = nullableEnum64Collection.TypeMapping.ElementTypeMapping; @@ -8312,26 +6337,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8.TypeMapping = SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); nullableEnum8.SetComparer(new NullableValueComparer(nullableEnum8.TypeMapping.Comparer)); - nullableEnum8.SetKeyComparer(new NullableValueComparer(nullableEnum8.TypeMapping.KeyComparer)); var nullableEnum8Array = runtimeEntityType.AddProperty( "NullableEnum8Array", @@ -8365,45 +6379,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8ArrayElementType = nullableEnum8Array.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8ArrayElementType.TypeMapping = nullableEnum8Array.TypeMapping.ElementTypeMapping; @@ -8442,26 +6436,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8AsString.TypeMapping = SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); nullableEnum8AsString.SetComparer(new NullableValueComparer(nullableEnum8AsString.TypeMapping.Comparer)); - nullableEnum8AsString.SetKeyComparer(new NullableValueComparer(nullableEnum8AsString.TypeMapping.KeyComparer)); var nullableEnum8AsStringArray = runtimeEntityType.AddProperty( "NullableEnum8AsStringArray", @@ -8495,45 +6478,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8AsStringArrayElementType = nullableEnum8AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8AsStringArrayElementType.TypeMapping = nullableEnum8AsStringArray.TypeMapping.ElementTypeMapping; @@ -8571,45 +6534,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8AsStringCollectionElementType = nullableEnum8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8AsStringCollectionElementType.TypeMapping = nullableEnum8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -8647,45 +6590,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8CollectionElementType = nullableEnum8Collection.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8CollectionElementType.TypeMapping = nullableEnum8Collection.TypeMapping.ElementTypeMapping; @@ -8724,26 +6647,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16.TypeMapping = UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); nullableEnumU16.SetComparer(new NullableValueComparer(nullableEnumU16.TypeMapping.Comparer)); - nullableEnumU16.SetKeyComparer(new NullableValueComparer(nullableEnumU16.TypeMapping.KeyComparer)); var nullableEnumU16Array = runtimeEntityType.AddProperty( "NullableEnumU16Array", @@ -8777,45 +6689,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16ArrayElementType = nullableEnumU16Array.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16ArrayElementType.TypeMapping = nullableEnumU16Array.TypeMapping.ElementTypeMapping; @@ -8854,26 +6746,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16AsString.TypeMapping = UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); nullableEnumU16AsString.SetComparer(new NullableValueComparer(nullableEnumU16AsString.TypeMapping.Comparer)); - nullableEnumU16AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU16AsString.TypeMapping.KeyComparer)); var nullableEnumU16AsStringArray = runtimeEntityType.AddProperty( "NullableEnumU16AsStringArray", @@ -8907,45 +6788,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16AsStringArrayElementType = nullableEnumU16AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16AsStringArrayElementType.TypeMapping = nullableEnumU16AsStringArray.TypeMapping.ElementTypeMapping; @@ -8983,45 +6844,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16AsStringCollectionElementType = nullableEnumU16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16AsStringCollectionElementType.TypeMapping = nullableEnumU16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -9059,45 +6900,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16CollectionElementType = nullableEnumU16Collection.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16CollectionElementType.TypeMapping = nullableEnumU16Collection.TypeMapping.ElementTypeMapping; @@ -9136,26 +6957,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32.TypeMapping = UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); nullableEnumU32.SetComparer(new NullableValueComparer(nullableEnumU32.TypeMapping.Comparer)); - nullableEnumU32.SetKeyComparer(new NullableValueComparer(nullableEnumU32.TypeMapping.KeyComparer)); var nullableEnumU32Array = runtimeEntityType.AddProperty( "NullableEnumU32Array", @@ -9189,45 +6999,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32ArrayElementType = nullableEnumU32Array.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32ArrayElementType.TypeMapping = nullableEnumU32Array.TypeMapping.ElementTypeMapping; @@ -9266,26 +7056,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32AsString.TypeMapping = UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); nullableEnumU32AsString.SetComparer(new NullableValueComparer(nullableEnumU32AsString.TypeMapping.Comparer)); - nullableEnumU32AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU32AsString.TypeMapping.KeyComparer)); var nullableEnumU32AsStringArray = runtimeEntityType.AddProperty( "NullableEnumU32AsStringArray", @@ -9319,45 +7098,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32AsStringArrayElementType = nullableEnumU32AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32AsStringArrayElementType.TypeMapping = nullableEnumU32AsStringArray.TypeMapping.ElementTypeMapping; @@ -9395,45 +7154,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32AsStringCollectionElementType = nullableEnumU32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32AsStringCollectionElementType.TypeMapping = nullableEnumU32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -9471,45 +7210,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32CollectionElementType = nullableEnumU32Collection.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32CollectionElementType.TypeMapping = nullableEnumU32Collection.TypeMapping.ElementTypeMapping; @@ -9548,24 +7267,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64.TypeMapping = SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))); + EnumToNumberConverter.Instance)); nullableEnumU64.SetComparer(new NullableValueComparer(nullableEnumU64.TypeMapping.Comparer)); - nullableEnumU64.SetKeyComparer(new NullableValueComparer(nullableEnumU64.TypeMapping.KeyComparer)); var nullableEnumU64Array = runtimeEntityType.AddProperty( "NullableEnumU64Array", @@ -9599,43 +7307,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU64ArrayElementType = nullableEnumU64Array.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64ArrayElementType.TypeMapping = nullableEnumU64Array.TypeMapping.ElementTypeMapping; @@ -9674,24 +7362,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64AsString.TypeMapping = SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))); + EnumToNumberConverter.Instance)); nullableEnumU64AsString.SetComparer(new NullableValueComparer(nullableEnumU64AsString.TypeMapping.Comparer)); - nullableEnumU64AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU64AsString.TypeMapping.KeyComparer)); var nullableEnumU64AsStringArray = runtimeEntityType.AddProperty( "NullableEnumU64AsStringArray", @@ -9725,43 +7402,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU64AsStringArrayElementType = nullableEnumU64AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64AsStringArrayElementType.TypeMapping = nullableEnumU64AsStringArray.TypeMapping.ElementTypeMapping; @@ -9799,43 +7456,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU64AsStringCollectionElementType = nullableEnumU64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64AsStringCollectionElementType.TypeMapping = nullableEnumU64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -9873,43 +7510,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU64CollectionElementType = nullableEnumU64Collection.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64CollectionElementType.TypeMapping = nullableEnumU64Collection.TypeMapping.ElementTypeMapping; @@ -9948,26 +7565,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); nullableEnumU8.SetComparer(new NullableValueComparer(nullableEnumU8.TypeMapping.Comparer)); - nullableEnumU8.SetKeyComparer(new NullableValueComparer(nullableEnumU8.TypeMapping.KeyComparer)); var nullableEnumU8Array = runtimeEntityType.AddProperty( "NullableEnumU8Array", @@ -10001,45 +7607,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8ArrayElementType = nullableEnumU8Array.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8ArrayElementType.TypeMapping = nullableEnumU8Array.TypeMapping.ElementTypeMapping; @@ -10078,26 +7664,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8AsString.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); nullableEnumU8AsString.SetComparer(new NullableValueComparer(nullableEnumU8AsString.TypeMapping.Comparer)); - nullableEnumU8AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU8AsString.TypeMapping.KeyComparer)); var nullableEnumU8AsStringArray = runtimeEntityType.AddProperty( "NullableEnumU8AsStringArray", @@ -10131,45 +7706,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8AsStringArrayElementType = nullableEnumU8AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8AsStringArrayElementType.TypeMapping = nullableEnumU8AsStringArray.TypeMapping.ElementTypeMapping; @@ -10207,45 +7762,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8AsStringCollectionElementType = nullableEnumU8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8AsStringCollectionElementType.TypeMapping = nullableEnumU8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -10283,45 +7818,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8CollectionElementType = nullableEnumU8Collection.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8CollectionElementType.TypeMapping = nullableEnumU8Collection.TypeMapping.ElementTypeMapping; @@ -10360,22 +7875,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableFloat.TypeMapping = FloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL")); nullableFloat.SetComparer(new NullableValueComparer(nullableFloat.TypeMapping.Comparer)); - nullableFloat.SetKeyComparer(new NullableValueComparer(nullableFloat.TypeMapping.KeyComparer)); var nullableFloatArray = runtimeEntityType.AddProperty( "NullableFloatArray", @@ -10409,35 +7911,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableFloatArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultFloatValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonFloatReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonFloatReaderWriter.Instance), elementMapping: FloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL"))); var nullableFloatArrayElementType = nullableFloatArray.SetElementType(typeof(float?), @@ -10479,7 +7959,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableGuid.TypeMapping = SqliteGuidTypeMapping.Default; nullableGuid.SetComparer(new NullableValueComparer(nullableGuid.TypeMapping.Comparer)); - nullableGuid.SetKeyComparer(new NullableValueComparer(nullableGuid.TypeMapping.KeyComparer)); var nullableGuidArray = runtimeEntityType.AddProperty( "NullableGuidArray", @@ -10513,18 +7992,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableGuidArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( SqliteJsonGuidReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( @@ -10568,24 +8037,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableIPAddress.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))); + IPAddressToStringConverter.Instance)); var nullableIPAddressArray = runtimeEntityType.AddProperty( "NullableIPAddressArray", @@ -10619,45 +8078,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableIPAddressArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var nullableIPAddressArrayElementType = nullableIPAddressArray.SetElementType(typeof(IPAddress), nullable: true); nullableIPAddressArrayElementType.TypeMapping = nullableIPAddressArray.TypeMapping.ElementTypeMapping; @@ -10695,22 +8134,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt16.TypeMapping = ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableInt16.SetComparer(new NullableValueComparer(nullableInt16.TypeMapping.Comparer)); - nullableInt16.SetKeyComparer(new NullableValueComparer(nullableInt16.TypeMapping.KeyComparer)); var nullableInt16Array = runtimeEntityType.AddProperty( "NullableInt16Array", @@ -10744,35 +8170,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt16ReaderWriter.Instance), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableInt16ArrayElementType = nullableInt16Array.SetElementType(typeof(short?), @@ -10813,22 +8217,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableInt32.SetComparer(new NullableValueComparer(nullableInt32.TypeMapping.Comparer)); - nullableInt32.SetKeyComparer(new NullableValueComparer(nullableInt32.TypeMapping.KeyComparer)); var nullableInt32Array = runtimeEntityType.AddProperty( "NullableInt32Array", @@ -10862,35 +8253,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableInt32ArrayElementType = nullableInt32Array.SetElementType(typeof(int?), @@ -10931,22 +8300,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt64.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableInt64.SetComparer(new NullableValueComparer(nullableInt64.TypeMapping.Comparer)); - nullableInt64.SetKeyComparer(new NullableValueComparer(nullableInt64.TypeMapping.KeyComparer)); var nullableInt64Array = runtimeEntityType.AddProperty( "NullableInt64Array", @@ -10980,35 +8336,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableInt64ArrayElementType = nullableInt64Array.SetElementType(typeof(long?), @@ -11049,22 +8383,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt8.TypeMapping = SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableInt8.SetComparer(new NullableValueComparer(nullableInt8.TypeMapping.Comparer)); - nullableInt8.SetKeyComparer(new NullableValueComparer(nullableInt8.TypeMapping.KeyComparer)); var nullableInt8Array = runtimeEntityType.AddProperty( "NullableInt8Array", @@ -11098,35 +8419,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSByteReaderWriter.Instance), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableInt8ArrayElementType = nullableInt8Array.SetElementType(typeof(sbyte?), @@ -11167,24 +8466,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullablePhysicalAddress.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 20), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + PhysicalAddressToStringConverter.Instance)); var nullablePhysicalAddressArray = runtimeEntityType.AddProperty( "NullablePhysicalAddressArray", @@ -11218,45 +8507,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullablePhysicalAddressArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))), + PhysicalAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))), + PhysicalAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 20), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))); + PhysicalAddressToStringConverter.Instance))); var nullablePhysicalAddressArrayElementType = nullablePhysicalAddressArray.SetElementType(typeof(PhysicalAddress), nullable: true); nullablePhysicalAddressArrayElementType.TypeMapping = nullablePhysicalAddressArray.TypeMapping.ElementTypeMapping; @@ -11328,18 +8597,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( @@ -11383,7 +8642,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableTimeOnly.TypeMapping = SqliteTimeOnlyTypeMapping.Default; nullableTimeOnly.SetComparer(new NullableValueComparer(nullableTimeOnly.TypeMapping.Comparer)); - nullableTimeOnly.SetKeyComparer(new NullableValueComparer(nullableTimeOnly.TypeMapping.KeyComparer)); var nullableTimeOnlyArray = runtimeEntityType.AddProperty( "NullableTimeOnlyArray", @@ -11417,18 +8675,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableTimeOnlyArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonTimeOnlyReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( @@ -11472,22 +8720,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableTimeSpan.TypeMapping = TimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT")); nullableTimeSpan.SetComparer(new NullableValueComparer(nullableTimeSpan.TypeMapping.Comparer)); - nullableTimeSpan.SetKeyComparer(new NullableValueComparer(nullableTimeSpan.TypeMapping.KeyComparer)); var nullableTimeSpanArray = runtimeEntityType.AddProperty( "NullableTimeSpanArray", @@ -11521,35 +8756,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableTimeSpanArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonTimeSpanReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonTimeSpanReaderWriter.Instance), elementMapping: TimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT"))); var nullableTimeSpanArrayElementType = nullableTimeSpanArray.SetElementType(typeof(TimeSpan?), @@ -11590,22 +8803,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt16.TypeMapping = UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableUInt16.SetComparer(new NullableValueComparer(nullableUInt16.TypeMapping.Comparer)); - nullableUInt16.SetKeyComparer(new NullableValueComparer(nullableUInt16.TypeMapping.KeyComparer)); var nullableUInt16Array = runtimeEntityType.AddProperty( "NullableUInt16Array", @@ -11639,35 +8839,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUInt16ReaderWriter.Instance), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableUInt16ArrayElementType = nullableUInt16Array.SetElementType(typeof(ushort?), @@ -11708,22 +8886,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt32.TypeMapping = UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableUInt32.SetComparer(new NullableValueComparer(nullableUInt32.TypeMapping.Comparer)); - nullableUInt32.SetKeyComparer(new NullableValueComparer(nullableUInt32.TypeMapping.KeyComparer)); var nullableUInt32Array = runtimeEntityType.AddProperty( "NullableUInt32Array", @@ -11757,35 +8922,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUInt32ReaderWriter.Instance), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableUInt32ArrayElementType = nullableUInt32Array.SetElementType(typeof(uint?), @@ -11827,7 +8970,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableUInt64.TypeMapping = SqliteULongTypeMapping.Default; nullableUInt64.SetComparer(new NullableValueComparer(nullableUInt64.TypeMapping.Comparer)); - nullableUInt64.SetKeyComparer(new NullableValueComparer(nullableUInt64.TypeMapping.KeyComparer)); var nullableUInt64Array = runtimeEntityType.AddProperty( "NullableUInt64Array", @@ -11861,18 +9003,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( @@ -11916,22 +9048,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt8.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableUInt8.SetComparer(new NullableValueComparer(nullableUInt8.TypeMapping.Comparer)); - nullableUInt8.SetKeyComparer(new NullableValueComparer(nullableUInt8.TypeMapping.KeyComparer)); var nullableUInt8Array = runtimeEntityType.AddProperty( "NullableUInt8Array", @@ -11965,35 +9084,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableUInt8ArrayElementType = nullableUInt8Array.SetElementType(typeof(byte?), @@ -12034,22 +9131,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUri.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + UriToStringConverter.Instance)); var nullableUriArray = runtimeEntityType.AddProperty( "NullableUriArray", @@ -12083,43 +9170,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUriArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))), + UriToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))), + UriToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))); + UriToStringConverter.Instance))); var nullableUriArrayElementType = nullableUriArray.SetElementType(typeof(Uri), nullable: true); nullableUriArrayElementType.TypeMapping = nullableUriArray.TypeMapping.ElementTypeMapping; @@ -12156,24 +9223,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddress.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 20), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + PhysicalAddressToStringConverter.Instance)); var physicalAddressArray = runtimeEntityType.AddProperty( "PhysicalAddressArray", @@ -12207,45 +9264,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddressArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))), + PhysicalAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))), + PhysicalAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 20), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))); + PhysicalAddressToStringConverter.Instance))); var physicalAddressArrayElementType = physicalAddressArray.SetElementType(typeof(PhysicalAddress)); physicalAddressArrayElementType.TypeMapping = physicalAddressArray.TypeMapping.ElementTypeMapping; @@ -12282,18 +9319,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddressToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: ValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 8), converter: new ValueConverter(byte[] (PhysicalAddress v) => v.GetAddressBytes(), PhysicalAddress (byte[] v) => new PhysicalAddress(v)), @@ -12334,18 +9361,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddressToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 20), converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), @@ -12418,18 +9435,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( @@ -12470,18 +9477,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -12523,18 +9520,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToBoolConverterProperty.TypeMapping = BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(bool (string v) => Convert.ToBoolean(v), string (bool v) => Convert.ToString(v)), @@ -12575,18 +9562,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, converter: new ValueConverter(byte[] (string v) => Encoding.GetEncoding(12000).GetBytes(v), string (byte[] v) => Encoding.GetEncoding(12000).GetString(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( SqliteJsonByteArrayReaderWriter.Instance, @@ -12625,18 +9602,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToCharConverterProperty.TypeMapping = CharTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT", size: 1), @@ -12678,18 +9645,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDateOnlyConverterProperty.TypeMapping = SqliteDateOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 10), converter: new ValueConverter(DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd")), @@ -12730,18 +9687,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDateTimeConverterProperty.TypeMapping = SqliteDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture), string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF")), @@ -12782,18 +9729,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDateTimeOffsetConverterProperty.TypeMapping = SqliteDateTimeOffsetTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultDateTimeOffsetValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture), string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz")), @@ -12834,18 +9771,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDecimalNumberConverterProperty.TypeMapping = SqliteDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), @@ -12886,18 +9813,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDoubleNumberConverterProperty.TypeMapping = DoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultDoubleValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL", size: 64), @@ -12939,18 +9856,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToEnumConverterProperty.TypeMapping = UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(uint (string v) => ((uint)(StringEnumConverter.ConvertToEnum(v))), string (uint value) => ((object)((CompiledModelTestBase.EnumU32)value)).ToString()), @@ -13024,18 +9931,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToIntNumberConverterProperty.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER", size: 64), @@ -13077,18 +9974,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToTimeOnlyConverterProperty.TypeMapping = SqliteTimeOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o"))), @@ -13129,18 +10016,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToTimeSpanConverterProperty.TypeMapping = TimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT", size: 48), @@ -13182,18 +10059,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToUriConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString(), string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString()), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, @@ -13265,18 +10131,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeOnlyArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonTimeOnlyReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -13318,18 +10174,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeOnlyToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o")), TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)), @@ -13371,18 +10217,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeOnlyToTicksConverterProperty.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(long (TimeOnly v) => v.Ticks, TimeOnly (long v) => new TimeOnly(v)), @@ -13424,18 +10260,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpan.TypeMapping = TimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT")); @@ -13471,35 +10295,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpanArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonTimeSpanReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonTimeSpanReaderWriter.Instance), elementMapping: TimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT"))); var timeSpanArrayElementType = timeSpanArray.SetElementType(typeof(TimeSpan)); @@ -13538,18 +10340,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpanToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(string (TimeSpan v) => v.ToString("c"), TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture)), @@ -13591,18 +10383,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpanToTicksConverterProperty.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(long (TimeSpan v) => v.Ticks, TimeSpan (long v) => new TimeSpan(v)), @@ -13644,18 +10426,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt16.TypeMapping = UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -13691,35 +10461,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUInt16ReaderWriter.Instance), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var uInt16ArrayElementType = uInt16Array.SetElementType(typeof(ushort)); @@ -13758,18 +10506,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt32.TypeMapping = UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -13805,35 +10541,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUInt32ReaderWriter.Instance), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var uInt32ArrayElementType = uInt32Array.SetElementType(typeof(uint)); @@ -13905,18 +10619,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -13958,18 +10662,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt8.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -14005,18 +10697,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt8Array.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var uInt8ReadOnlyCollection = runtimeEntityType.AddProperty( "UInt8ReadOnlyCollection", @@ -14050,35 +10731,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt8ReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var uInt8ReadOnlyCollectionElementType = uInt8ReadOnlyCollection.SetElementType(typeof(byte)); @@ -14116,22 +10775,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uri.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + UriToStringConverter.Instance)); var uriArray = runtimeEntityType.AddProperty( "UriArray", @@ -14165,43 +10814,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uriArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))), + UriToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))), + UriToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))); + UriToStringConverter.Instance))); var uriArrayElementType = uriArray.SetElementType(typeof(Uri)); uriArrayElementType.TypeMapping = uriArray.TypeMapping.ElementTypeMapping; @@ -14238,18 +10867,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uriToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index 0aeee4fef83..c69daadd43a 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -53,18 +53,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); principalDerivedId.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); @@ -106,18 +94,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 2, storeGenerationIndex: 2); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -189,18 +165,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); number.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -237,45 +201,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -312,18 +256,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -365,18 +299,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -418,45 +342,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -493,18 +397,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( SqliteJsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -546,35 +440,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); @@ -613,35 +485,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); @@ -680,35 +530,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index 5eae0ad012e..77d68a4682d 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -55,18 +55,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); principalBaseId.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); @@ -180,18 +168,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); number.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -229,45 +205,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -305,18 +261,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -359,18 +305,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -413,45 +349,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -489,18 +405,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( SqliteJsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -543,35 +449,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); @@ -611,35 +495,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); @@ -679,35 +541,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index 50afb6d85e7..ab0b1dd6a4b 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -72,23 +72,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var overrides = new StoreObjectDictionary(); var idPrincipalDerived = new RuntimeRelationalPropertyOverrides( @@ -169,24 +156,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum1.SetSentinelFromProviderValue(0); var enum2 = runtimeEntityType.AddProperty( @@ -222,26 +199,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); var flagsEnum1 = runtimeEntityType.AddProperty( "FlagsEnum1", @@ -275,24 +241,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum1.SetSentinelFromProviderValue(0); var flagsEnum2 = runtimeEntityType.AddProperty( @@ -328,24 +284,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum2.SetSentinelFromProviderValue(6); var point = runtimeEntityType.AddProperty( @@ -404,45 +350,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -479,18 +405,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -532,18 +448,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -585,45 +491,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -660,18 +546,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( SqliteJsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -713,35 +589,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); @@ -780,35 +634,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); @@ -847,35 +679,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index fae0247115a..fb5c26160f8 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; @@ -91,18 +89,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); derivedsId.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); @@ -221,18 +207,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 2, storeGenerationIndex: 2); principalsId.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); @@ -331,18 +305,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: 4); rowid.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var key = runtimeEntityType.AddKey( new[] { derivedsId, derivedsAlternateId, principalsId, principalsAlternateId }); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/AutoIncrementEntityEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/AutoIncrementEntityEntityType.cs index de8114f2299..9d5d83282ad 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/AutoIncrementEntityEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/AutoIncrementEntityEntityType.cs @@ -63,18 +63,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DataEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DataEntityType.cs index 7908e4ddeb7..9ac5f757e4e 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -49,18 +47,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -98,18 +84,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); blob.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var point = runtimeEntityType.AddProperty( "Point", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentBaseEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentBaseEntityType.cs index e2c80103d52..6bf258b4c2c 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentBaseEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentBaseEntityType.cs @@ -56,18 +56,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); principalId.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); @@ -108,24 +96,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumDiscriminator.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum1 v1, CompiledModelTestBase.Enum1 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum1 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum1 (CompiledModelTestBase.Enum1 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum1 value) => ((int)value), CompiledModelTestBase.Enum1 (int value) => ((CompiledModelTestBase.Enum1)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum1 value) => ((int)value), CompiledModelTestBase.Enum1 (int value) => ((CompiledModelTestBase.Enum1)value)))); + EnumToNumberConverter.Instance)); enumDiscriminator.SetSentinelFromProviderValue(0); var id = runtimeEntityType.AddProperty( @@ -161,22 +139,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); id.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var key = runtimeEntityType.AddKey( new[] { principalId, principalAlternateId }); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs index 4bf2b08ba62..6d694214b90 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs @@ -1,9 +1,7 @@ // using System; -using System.Collections; using System.Collections.Generic; using System.Globalization; -using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Reflection; @@ -73,18 +71,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.ManyTypesId v1, CompiledModelTestBase.ManyTypesId v2) => v1.Equals(v2), - int (CompiledModelTestBase.ManyTypesId v) => ((object)v).GetHashCode(), - CompiledModelTestBase.ManyTypesId (CompiledModelTestBase.ManyTypesId v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.ManyTypesId v1, CompiledModelTestBase.ManyTypesId v2) => v1.Equals(v2), - int (CompiledModelTestBase.ManyTypesId v) => ((object)v).GetHashCode(), - CompiledModelTestBase.ManyTypesId (CompiledModelTestBase.ManyTypesId v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(int (CompiledModelTestBase.ManyTypesId v) => v.Id, CompiledModelTestBase.ManyTypesId (int v) => new CompiledModelTestBase.ManyTypesId(v)), @@ -127,18 +115,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); @bool.TypeMapping = BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -174,35 +150,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonBoolReaderWriter.Instance), elementMapping: BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var boolArrayElementType = boolArray.SetElementType(typeof(bool)); @@ -240,35 +194,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, bool>(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - keyComparer: new ListOfValueTypesComparer, bool>(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, bool>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, bool>( JsonBoolReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, bool>( JsonBoolReaderWriter.Instance), elementMapping: BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var boolReadOnlyCollectionElementType = boolReadOnlyCollection.SetElementType(typeof(bool)); @@ -306,18 +238,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 1), converter: new ValueConverter(string (bool v) => ((string)((v ? "B" : "A"))), bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))), @@ -358,18 +280,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolToTwoValuesConverterProperty.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(byte (bool v) => ((byte)((v ? 1 : 0))), bool (byte v) => v == 1), @@ -411,18 +323,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); boolToZeroOneConverterProperty.TypeMapping = ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(short (bool v) => ((short)((v ? 1 : 0))), bool (short v) => v == 1), @@ -463,18 +365,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); bytes.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var bytesArray = runtimeEntityType.AddProperty( "BytesArray", @@ -508,35 +399,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); bytesArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( SqliteJsonByteArrayReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( SqliteJsonByteArrayReaderWriter.Instance), elementMapping: SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()))); + )); var bytesArrayElementType = bytesArray.SetElementType(typeof(byte[])); bytesArrayElementType.TypeMapping = bytesArray.TypeMapping.ElementTypeMapping; @@ -574,18 +444,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); bytesToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + keyComparer: ValueComparer.DefaultWithStructuralComparisons, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (byte[] v) => Convert.ToBase64String(v), byte[] (string v) => Convert.FromBase64String(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, @@ -624,18 +485,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); castingConverterProperty.TypeMapping = SqliteDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(decimal (int v) => ((decimal)v), int (decimal v) => ((int)v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( SqliteJsonDecimalReaderWriter.Instance, @@ -675,18 +526,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); @char.TypeMapping = CharTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT")); @@ -722,35 +561,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); charArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonCharReaderWriter.Instance), elementMapping: CharTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT"))); var charArrayElementType = charArray.SetElementType(typeof(char)); @@ -789,18 +606,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); charToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 1), converter: new ValueConverter(string (char v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), char (string v) => (v.Length < 1 ? '\0' : v[0])), @@ -875,18 +682,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateOnlyArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDateOnlyReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -928,18 +725,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateOnlyToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - keyComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 10), converter: new ValueConverter(string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd"), DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)), @@ -1014,18 +801,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( SqliteJsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -1067,18 +844,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeOffsetToBinaryConverterProperty.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(long (DateTimeOffset v) => DateTimeOffsetToBinaryConverter.ToLong(v), DateTimeOffset (long v) => DateTimeOffsetToBinaryConverter.ToDateTimeOffset(v)), @@ -1120,18 +887,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeOffsetToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 12), converter: new ValueConverter(byte[] (DateTimeOffset v) => DateTimeOffsetToBytesConverter.ToBytes(v), DateTimeOffset (byte[] v) => DateTimeOffsetToBytesConverter.FromBytes(v)), @@ -1173,18 +930,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeOffsetToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - keyComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultDateTimeOffsetValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz"), DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture)), @@ -1226,18 +973,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeToBinaryConverterProperty.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(long (DateTime v) => v.ToBinary(), DateTime (long v) => DateTime.FromBinary(v)), @@ -1279,18 +1016,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); dateTimeToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - keyComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF"), DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture)), @@ -1399,18 +1126,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); decimalArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( SqliteJsonDecimalReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -1452,18 +1169,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); decimalNumberToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 16), converter: new ValueConverter(byte[] (decimal v) => NumberToBytesConverter.DecimalToBytes(v), decimal (byte[] v) => (v == null ? 0M : NumberToBytesConverter.BytesToDecimal(v))), @@ -1505,18 +1212,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); decimalNumberToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - keyComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), @@ -1558,18 +1255,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); @double.TypeMapping = DoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL")); @@ -1605,35 +1290,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); doubleArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultDoubleValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonDoubleReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonDoubleReaderWriter.Instance), elementMapping: DoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL"))); var doubleArrayElementType = doubleArray.SetElementType(typeof(double)); @@ -1672,18 +1335,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); doubleNumberToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultDoubleValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 8), converter: new ValueConverter(byte[] (double v) => NumberToBytesConverter.ReverseLong(BitConverter.GetBytes(v)), double (byte[] v) => (v == null ? 0D : BitConverter.ToDouble(NumberToBytesConverter.ReverseLong(v), 0))), @@ -1725,18 +1378,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); doubleNumberToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultDoubleValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(string (double v) => string.Format(CultureInfo.InvariantCulture, "{0:R}", ((object)v)), double (string v) => double.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), @@ -1777,24 +1420,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16.TypeMapping = ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); enum16.SetSentinelFromProviderValue((short)0); var enum16Array = runtimeEntityType.AddProperty( @@ -1829,45 +1462,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var enum16ArrayElementType = enum16Array.SetElementType(typeof(CompiledModelTestBase.Enum16)); enum16ArrayElementType.TypeMapping = enum16Array.TypeMapping.ElementTypeMapping; @@ -1904,22 +1517,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum16AsString.SetSentinelFromProviderValue("Default"); var enum16AsStringArray = runtimeEntityType.AddProperty( @@ -1954,43 +1557,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum16AsStringArrayElementType = enum16AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum16), providerClrType: typeof(string)); enum16AsStringArrayElementType.TypeMapping = enum16AsStringArray.TypeMapping.ElementTypeMapping; @@ -2027,43 +1610,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum16 v) => ((object)v).ToString(), CompiledModelTestBase.Enum16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum16AsStringCollectionElementType = enum16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum16), providerClrType: typeof(string)); enum16AsStringCollectionElementType.TypeMapping = enum16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -2100,45 +1663,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum16Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var enum16CollectionElementType = enum16Collection.SetElementType(typeof(CompiledModelTestBase.Enum16)); enum16CollectionElementType.TypeMapping = enum16Collection.TypeMapping.ElementTypeMapping; @@ -2174,24 +1717,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); enum32.SetSentinelFromProviderValue(0); var enum32Array = runtimeEntityType.AddProperty( @@ -2226,45 +1759,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var enum32ArrayElementType = enum32Array.SetElementType(typeof(CompiledModelTestBase.Enum32)); enum32ArrayElementType.TypeMapping = enum32Array.TypeMapping.ElementTypeMapping; @@ -2301,22 +1814,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum32AsString.SetSentinelFromProviderValue("Default"); var enum32AsStringArray = runtimeEntityType.AddProperty( @@ -2351,43 +1854,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum32AsStringArrayElementType = enum32AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum32), providerClrType: typeof(string)); enum32AsStringArrayElementType.TypeMapping = enum32AsStringArray.TypeMapping.ElementTypeMapping; @@ -2424,43 +1907,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum32AsStringCollectionElementType = enum32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum32), providerClrType: typeof(string)); enum32AsStringCollectionElementType.TypeMapping = enum32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -2497,45 +1960,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum32Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var enum32CollectionElementType = enum32Collection.SetElementType(typeof(CompiledModelTestBase.Enum32)); enum32CollectionElementType.TypeMapping = enum32Collection.TypeMapping.ElementTypeMapping; @@ -2571,24 +2014,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); enum64.SetSentinelFromProviderValue(0L); var enum64Array = runtimeEntityType.AddProperty( @@ -2623,45 +2056,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var enum64ArrayElementType = enum64Array.SetElementType(typeof(CompiledModelTestBase.Enum64)); enum64ArrayElementType.TypeMapping = enum64Array.TypeMapping.ElementTypeMapping; @@ -2698,22 +2111,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum64AsString.SetSentinelFromProviderValue("Default"); var enum64AsStringArray = runtimeEntityType.AddProperty( @@ -2748,43 +2151,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum64AsStringArrayElementType = enum64AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum64), providerClrType: typeof(string)); enum64AsStringArrayElementType.TypeMapping = enum64AsStringArray.TypeMapping.ElementTypeMapping; @@ -2821,43 +2204,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum64 v) => ((object)v).ToString(), CompiledModelTestBase.Enum64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum64AsStringCollectionElementType = enum64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum64), providerClrType: typeof(string)); enum64AsStringCollectionElementType.TypeMapping = enum64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -2894,45 +2257,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum64Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var enum64CollectionElementType = enum64Collection.SetElementType(typeof(CompiledModelTestBase.Enum64)); enum64CollectionElementType.TypeMapping = enum64Collection.TypeMapping.ElementTypeMapping; @@ -2968,24 +2311,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8.TypeMapping = SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); enum8.SetSentinelFromProviderValue((sbyte)0); var enum8Array = runtimeEntityType.AddProperty( @@ -3020,45 +2353,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var enum8ArrayElementType = enum8Array.SetElementType(typeof(CompiledModelTestBase.Enum8)); enum8ArrayElementType.TypeMapping = enum8Array.TypeMapping.ElementTypeMapping; @@ -3095,22 +2408,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enum8AsString.SetSentinelFromProviderValue("Default"); var enum8AsStringArray = runtimeEntityType.AddProperty( @@ -3145,43 +2448,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum8AsStringArrayElementType = enum8AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum8), providerClrType: typeof(string)); enum8AsStringArrayElementType.TypeMapping = enum8AsStringArray.TypeMapping.ElementTypeMapping; @@ -3218,43 +2501,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.Enum8 v) => ((object)v).ToString(), CompiledModelTestBase.Enum8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enum8AsStringCollectionElementType = enum8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum8), providerClrType: typeof(string)); enum8AsStringCollectionElementType.TypeMapping = enum8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -3291,45 +2554,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum8Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.Enum8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var enum8CollectionElementType = enum8Collection.SetElementType(typeof(CompiledModelTestBase.Enum8)); enum8CollectionElementType.TypeMapping = enum8Collection.TypeMapping.ElementTypeMapping; @@ -3366,18 +2609,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumToNumberConverterProperty.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), @@ -3419,18 +2652,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (CompiledModelTestBase.Enum32 v) => ((object)v).ToString(), CompiledModelTestBase.Enum32 (string v) => StringEnumConverter.ConvertToEnum(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, @@ -3469,24 +2692,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16.TypeMapping = UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); enumU16.SetSentinelFromProviderValue((ushort)0); var enumU16Array = runtimeEntityType.AddProperty( @@ -3521,45 +2734,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var enumU16ArrayElementType = enumU16Array.SetElementType(typeof(CompiledModelTestBase.EnumU16)); enumU16ArrayElementType.TypeMapping = enumU16Array.TypeMapping.ElementTypeMapping; @@ -3596,22 +2789,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU16AsString.SetSentinelFromProviderValue("Min"); var enumU16AsStringArray = runtimeEntityType.AddProperty( @@ -3646,43 +2829,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU16AsStringArrayElementType = enumU16AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU16), providerClrType: typeof(string)); enumU16AsStringArrayElementType.TypeMapping = enumU16AsStringArray.TypeMapping.ElementTypeMapping; @@ -3719,43 +2882,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU16 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU16 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU16AsStringCollectionElementType = enumU16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU16), providerClrType: typeof(string)); enumU16AsStringCollectionElementType.TypeMapping = enumU16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -3792,45 +2935,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU16Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU16>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var enumU16CollectionElementType = enumU16Collection.SetElementType(typeof(CompiledModelTestBase.EnumU16)); enumU16CollectionElementType.TypeMapping = enumU16Collection.TypeMapping.ElementTypeMapping; @@ -3866,24 +2989,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32.TypeMapping = UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); enumU32.SetSentinelFromProviderValue(0u); var enumU32Array = runtimeEntityType.AddProperty( @@ -3918,45 +3031,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var enumU32ArrayElementType = enumU32Array.SetElementType(typeof(CompiledModelTestBase.EnumU32)); enumU32ArrayElementType.TypeMapping = enumU32Array.TypeMapping.ElementTypeMapping; @@ -3993,22 +3086,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU32AsString.SetSentinelFromProviderValue("Min"); var enumU32AsStringArray = runtimeEntityType.AddProperty( @@ -4043,43 +3126,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU32AsStringArrayElementType = enumU32AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU32), providerClrType: typeof(string)); enumU32AsStringArrayElementType.TypeMapping = enumU32AsStringArray.TypeMapping.ElementTypeMapping; @@ -4116,43 +3179,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU32 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU32 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU32AsStringCollectionElementType = enumU32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU32), providerClrType: typeof(string)); enumU32AsStringCollectionElementType.TypeMapping = enumU32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -4189,45 +3232,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU32Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU32>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var enumU32CollectionElementType = enumU32Collection.SetElementType(typeof(CompiledModelTestBase.EnumU32)); enumU32CollectionElementType.TypeMapping = enumU32Collection.TypeMapping.ElementTypeMapping; @@ -4263,22 +3286,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64.TypeMapping = SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))); + EnumToNumberConverter.Instance)); enumU64.SetSentinelFromProviderValue(0ul); var enumU64Array = runtimeEntityType.AddProperty( @@ -4313,43 +3326,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))); + EnumToNumberConverter.Instance))); var enumU64ArrayElementType = enumU64Array.SetElementType(typeof(CompiledModelTestBase.EnumU64)); enumU64ArrayElementType.TypeMapping = enumU64Array.TypeMapping.ElementTypeMapping; @@ -4386,22 +3379,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU64AsString.SetSentinelFromProviderValue("Min"); var enumU64AsStringArray = runtimeEntityType.AddProperty( @@ -4436,43 +3419,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU64AsStringArrayElementType = enumU64AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU64), providerClrType: typeof(string)); enumU64AsStringArrayElementType.TypeMapping = enumU64AsStringArray.TypeMapping.ElementTypeMapping; @@ -4509,43 +3472,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU64 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU64 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU64AsStringCollectionElementType = enumU64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU64), providerClrType: typeof(string)); enumU64AsStringCollectionElementType.TypeMapping = enumU64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -4582,43 +3525,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU64Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU64>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))); + EnumToNumberConverter.Instance))); var enumU64CollectionElementType = enumU64Collection.SetElementType(typeof(CompiledModelTestBase.EnumU64)); enumU64CollectionElementType.TypeMapping = enumU64Collection.TypeMapping.ElementTypeMapping; @@ -4654,24 +3577,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); enumU8.SetSentinelFromProviderValue((byte)0); var enumU8Array = runtimeEntityType.AddProperty( @@ -4706,45 +3619,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var enumU8ArrayElementType = enumU8Array.SetElementType(typeof(CompiledModelTestBase.EnumU8)); enumU8ArrayElementType.TypeMapping = enumU8Array.TypeMapping.ElementTypeMapping; @@ -4781,22 +3674,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8AsString.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))); + EnumToStringConverter.Instance)); enumU8AsString.SetSentinelFromProviderValue("Min"); var enumU8AsStringArray = runtimeEntityType.AddProperty( @@ -4831,43 +3714,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU8AsStringArrayElementType = enumU8AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU8), providerClrType: typeof(string)); enumU8AsStringArrayElementType.TypeMapping = enumU8AsStringArray.TypeMapping.ElementTypeMapping; @@ -4904,43 +3767,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))), + EnumToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)))), + EnumToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (CompiledModelTestBase.EnumU8 v) => ((object)v).ToString(), CompiledModelTestBase.EnumU8 (string v) => StringEnumConverter.ConvertToEnum(v))))); + EnumToStringConverter.Instance))); var enumU8AsStringCollectionElementType = enumU8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU8), providerClrType: typeof(string)); enumU8AsStringCollectionElementType.TypeMapping = enumU8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -4977,45 +3820,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enumU8Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - keyComparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, CompiledModelTestBase.EnumU8>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var enumU8CollectionElementType = enumU8Collection.SetElementType(typeof(CompiledModelTestBase.EnumU8)); enumU8CollectionElementType.TypeMapping = enumU8Collection.TypeMapping.ElementTypeMapping; @@ -5052,18 +3875,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); @float.TypeMapping = FloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL")); @@ -5099,35 +3910,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); floatArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultFloatValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonFloatReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonFloatReaderWriter.Instance), elementMapping: FloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL"))); var floatArrayElementType = floatArray.SetElementType(typeof(float)); @@ -5199,18 +3988,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guidArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( SqliteJsonGuidReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -5252,18 +4031,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guidToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 16), converter: new ValueConverter(byte[] (Guid v) => v.ToByteArray(), Guid (byte[] v) => new Guid(v)), @@ -5305,18 +4074,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); guidToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - keyComparer: new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 36), converter: new ValueConverter(string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)), @@ -5357,24 +4116,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddress.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))); + IPAddressToStringConverter.Instance)); var iPAddressArray = runtimeEntityType.AddProperty( "IPAddressArray", @@ -5408,45 +4157,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var iPAddressArrayElementType = iPAddressArray.SetElementType(typeof(IPAddress)); iPAddressArrayElementType.TypeMapping = iPAddressArray.TypeMapping.ElementTypeMapping; @@ -5482,45 +4211,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var iPAddressReadOnlyCollectionElementType = iPAddressReadOnlyCollection.SetElementType(typeof(IPAddress), providerClrType: typeof(string)); iPAddressReadOnlyCollectionElementType.TypeMapping = iPAddressReadOnlyCollection.TypeMapping.ElementTypeMapping; @@ -5558,18 +4267,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: ValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 16), converter: new ValueConverter(byte[] (IPAddress v) => v.GetAddressBytes(), IPAddress (byte[] v) => new IPAddress(v)), @@ -5610,18 +4309,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); iPAddressToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), @@ -5662,18 +4351,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int16.TypeMapping = ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -5709,35 +4386,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt16ReaderWriter.Instance), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var int16ArrayElementType = int16Array.SetElementType(typeof(short)); @@ -5776,18 +4431,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -5823,35 +4466,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt32ReaderWriter.Instance), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var int32ArrayElementType = int32Array.SetElementType(typeof(int)); @@ -5889,35 +4510,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int32ReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - keyComparer: new ListOfValueTypesComparer, int>(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, int>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, int>( JsonInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, int>( JsonInt32ReaderWriter.Instance), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var int32ReadOnlyCollectionElementType = int32ReadOnlyCollection.SetElementType(typeof(int)); @@ -5956,18 +4555,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int64.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -6003,35 +4590,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonInt64ReaderWriter.Instance), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var int64ArrayElementType = int64Array.SetElementType(typeof(long)); @@ -6070,18 +4635,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int8.TypeMapping = SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -6117,35 +4670,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); int8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonSByteReaderWriter.Instance), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var int8ArrayElementType = int8Array.SetElementType(typeof(sbyte)); @@ -6184,18 +4715,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); intNumberToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 4), converter: new ValueConverter(byte[] (int v) => NumberToBytesConverter.ReverseInt(BitConverter.GetBytes(v)), int (byte[] v) => (v == null ? 0 : BitConverter.ToInt32(NumberToBytesConverter.ReverseInt((v.Length == 0 ? new byte[4] : v)), 0))), @@ -6237,18 +4758,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); intNumberToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(string (int v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v)), int (string v) => int.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture)), @@ -6291,18 +4802,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullIntToNullStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int? v1, int? v2) => v1 == v2, - int (int? v) => ((int)v), - int? (int? v) => v), - keyComparer: new ValueComparer( - bool (int? v1, int? v2) => v1 == v2, - int (int? v) => ((int)v), - int? (int? v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (int? v) => (v == null ? null : ((object)v).ToString()), int? (string v) => (v == null || v == "" ? null : ((int? )(int.Parse(v)))), true), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, @@ -6341,22 +4842,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBool.TypeMapping = BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableBool.SetComparer(new NullableValueComparer(nullableBool.TypeMapping.Comparer)); - nullableBool.SetKeyComparer(new NullableValueComparer(nullableBool.TypeMapping.KeyComparer)); var nullableBoolArray = runtimeEntityType.AddProperty( "NullableBoolArray", @@ -6390,35 +4878,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBoolArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonBoolReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonBoolReaderWriter.Instance), elementMapping: BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableBoolArrayElementType = nullableBoolArray.SetElementType(typeof(bool?), @@ -6459,18 +4925,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBytes.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var nullableBytesArray = runtimeEntityType.AddProperty( "NullableBytesArray", @@ -6504,35 +4959,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableBytesArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( SqliteJsonByteArrayReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( SqliteJsonByteArrayReaderWriter.Instance), elementMapping: SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()))); + )); var nullableBytesArrayElementType = nullableBytesArray.SetElementType(typeof(byte[]), nullable: true); nullableBytesArrayElementType.TypeMapping = nullableBytesArray.TypeMapping.ElementTypeMapping; @@ -6570,22 +5004,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableChar.TypeMapping = CharTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT")); nullableChar.SetComparer(new NullableValueComparer(nullableChar.TypeMapping.Comparer)); - nullableChar.SetKeyComparer(new NullableValueComparer(nullableChar.TypeMapping.KeyComparer)); var nullableCharArray = runtimeEntityType.AddProperty( "NullableCharArray", @@ -6619,35 +5040,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableCharArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonCharReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonCharReaderWriter.Instance), elementMapping: CharTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - keyComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT"))); var nullableCharArrayElementType = nullableCharArray.SetElementType(typeof(char?), @@ -6689,7 +5088,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableDateOnly.TypeMapping = SqliteDateOnlyTypeMapping.Default; nullableDateOnly.SetComparer(new NullableValueComparer(nullableDateOnly.TypeMapping.Comparer)); - nullableDateOnly.SetKeyComparer(new NullableValueComparer(nullableDateOnly.TypeMapping.KeyComparer)); var nullableDateOnlyArray = runtimeEntityType.AddProperty( "NullableDateOnlyArray", @@ -6723,18 +5121,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDateOnlyArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonDateOnlyReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( @@ -6779,7 +5167,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableDateTime.TypeMapping = SqliteDateTimeTypeMapping.Default; nullableDateTime.SetComparer(new NullableValueComparer(nullableDateTime.TypeMapping.Comparer)); - nullableDateTime.SetKeyComparer(new NullableValueComparer(nullableDateTime.TypeMapping.KeyComparer)); var nullableDateTimeArray = runtimeEntityType.AddProperty( "NullableDateTimeArray", @@ -6813,18 +5200,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDateTimeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( SqliteJsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( @@ -6869,7 +5246,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableDecimal.TypeMapping = SqliteDecimalTypeMapping.Default; nullableDecimal.SetComparer(new NullableValueComparer(nullableDecimal.TypeMapping.Comparer)); - nullableDecimal.SetKeyComparer(new NullableValueComparer(nullableDecimal.TypeMapping.KeyComparer)); var nullableDecimalArray = runtimeEntityType.AddProperty( "NullableDecimalArray", @@ -6903,18 +5279,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDecimalArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( SqliteJsonDecimalReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( @@ -6958,22 +5324,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDouble.TypeMapping = DoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL")); nullableDouble.SetComparer(new NullableValueComparer(nullableDouble.TypeMapping.Comparer)); - nullableDouble.SetKeyComparer(new NullableValueComparer(nullableDouble.TypeMapping.KeyComparer)); var nullableDoubleArray = runtimeEntityType.AddProperty( "NullableDoubleArray", @@ -7007,35 +5360,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableDoubleArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultDoubleValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonDoubleReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonDoubleReaderWriter.Instance), elementMapping: DoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - keyComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL"))); var nullableDoubleArrayElementType = nullableDoubleArray.SetElementType(typeof(double?), @@ -7076,26 +5407,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16.TypeMapping = ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); nullableEnum16.SetComparer(new NullableValueComparer(nullableEnum16.TypeMapping.Comparer)); - nullableEnum16.SetKeyComparer(new NullableValueComparer(nullableEnum16.TypeMapping.KeyComparer)); var nullableEnum16Array = runtimeEntityType.AddProperty( "NullableEnum16Array", @@ -7129,45 +5449,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16ArrayElementType = nullableEnum16Array.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16ArrayElementType.TypeMapping = nullableEnum16Array.TypeMapping.ElementTypeMapping; @@ -7206,26 +5506,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16AsString.TypeMapping = ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))); + EnumToNumberConverter.Instance)); nullableEnum16AsString.SetComparer(new NullableValueComparer(nullableEnum16AsString.TypeMapping.Comparer)); - nullableEnum16AsString.SetKeyComparer(new NullableValueComparer(nullableEnum16AsString.TypeMapping.KeyComparer)); var nullableEnum16AsStringArray = runtimeEntityType.AddProperty( "NullableEnum16AsStringArray", @@ -7259,45 +5548,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16AsStringArrayElementType = nullableEnum16AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16AsStringArrayElementType.TypeMapping = nullableEnum16AsStringArray.TypeMapping.ElementTypeMapping; @@ -7335,45 +5604,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16AsStringCollectionElementType = nullableEnum16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16AsStringCollectionElementType.TypeMapping = nullableEnum16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -7411,45 +5660,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum16Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum16>( new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)))), + EnumToNumberConverter.Instance)), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum16 v1, CompiledModelTestBase.Enum16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum16 (CompiledModelTestBase.Enum16 v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt16ReaderWriter.Instance, - new ValueConverter(short (CompiledModelTestBase.Enum16 value) => ((short)value), CompiledModelTestBase.Enum16 (short value) => ((CompiledModelTestBase.Enum16)value))))); + EnumToNumberConverter.Instance))); var nullableEnum16CollectionElementType = nullableEnum16Collection.SetElementType(typeof(CompiledModelTestBase.Enum16?), nullable: true); nullableEnum16CollectionElementType.TypeMapping = nullableEnum16Collection.TypeMapping.ElementTypeMapping; @@ -7488,26 +5717,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); nullableEnum32.SetComparer(new NullableValueComparer(nullableEnum32.TypeMapping.Comparer)); - nullableEnum32.SetKeyComparer(new NullableValueComparer(nullableEnum32.TypeMapping.KeyComparer)); var nullableEnum32Array = runtimeEntityType.AddProperty( "NullableEnum32Array", @@ -7541,45 +5759,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32ArrayElementType = nullableEnum32Array.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32ArrayElementType.TypeMapping = nullableEnum32Array.TypeMapping.ElementTypeMapping; @@ -7618,26 +5816,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32AsString.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))); + EnumToNumberConverter.Instance)); nullableEnum32AsString.SetComparer(new NullableValueComparer(nullableEnum32AsString.TypeMapping.Comparer)); - nullableEnum32AsString.SetKeyComparer(new NullableValueComparer(nullableEnum32AsString.TypeMapping.KeyComparer)); var nullableEnum32AsStringArray = runtimeEntityType.AddProperty( "NullableEnum32AsStringArray", @@ -7671,45 +5858,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32AsStringArrayElementType = nullableEnum32AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32AsStringArrayElementType.TypeMapping = nullableEnum32AsStringArray.TypeMapping.ElementTypeMapping; @@ -7747,45 +5914,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32AsStringCollectionElementType = nullableEnum32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32AsStringCollectionElementType.TypeMapping = nullableEnum32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -7823,45 +5970,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum32Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum32>( new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)))), + EnumToNumberConverter.Instance)), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum32 v1, CompiledModelTestBase.Enum32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum32 (CompiledModelTestBase.Enum32 v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.Enum32 value) => ((int)value), CompiledModelTestBase.Enum32 (int value) => ((CompiledModelTestBase.Enum32)value))))); + EnumToNumberConverter.Instance))); var nullableEnum32CollectionElementType = nullableEnum32Collection.SetElementType(typeof(CompiledModelTestBase.Enum32?), nullable: true); nullableEnum32CollectionElementType.TypeMapping = nullableEnum32Collection.TypeMapping.ElementTypeMapping; @@ -7900,26 +6027,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); nullableEnum64.SetComparer(new NullableValueComparer(nullableEnum64.TypeMapping.Comparer)); - nullableEnum64.SetKeyComparer(new NullableValueComparer(nullableEnum64.TypeMapping.KeyComparer)); var nullableEnum64Array = runtimeEntityType.AddProperty( "NullableEnum64Array", @@ -7953,45 +6069,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64ArrayElementType = nullableEnum64Array.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64ArrayElementType.TypeMapping = nullableEnum64Array.TypeMapping.ElementTypeMapping; @@ -8030,26 +6126,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64AsString.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))); + EnumToNumberConverter.Instance)); nullableEnum64AsString.SetComparer(new NullableValueComparer(nullableEnum64AsString.TypeMapping.Comparer)); - nullableEnum64AsString.SetKeyComparer(new NullableValueComparer(nullableEnum64AsString.TypeMapping.KeyComparer)); var nullableEnum64AsStringArray = runtimeEntityType.AddProperty( "NullableEnum64AsStringArray", @@ -8083,45 +6168,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64AsStringArrayElementType = nullableEnum64AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64AsStringArrayElementType.TypeMapping = nullableEnum64AsStringArray.TypeMapping.ElementTypeMapping; @@ -8159,45 +6224,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64AsStringCollectionElementType = nullableEnum64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64AsStringCollectionElementType.TypeMapping = nullableEnum64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -8235,45 +6280,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum64Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum64>( new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)))), + EnumToNumberConverter.Instance)), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum64 v1, CompiledModelTestBase.Enum64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum64 (CompiledModelTestBase.Enum64 v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt64ReaderWriter.Instance, - new ValueConverter(long (CompiledModelTestBase.Enum64 value) => ((long)value), CompiledModelTestBase.Enum64 (long value) => ((CompiledModelTestBase.Enum64)value))))); + EnumToNumberConverter.Instance))); var nullableEnum64CollectionElementType = nullableEnum64Collection.SetElementType(typeof(CompiledModelTestBase.Enum64?), nullable: true); nullableEnum64CollectionElementType.TypeMapping = nullableEnum64Collection.TypeMapping.ElementTypeMapping; @@ -8312,26 +6337,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8.TypeMapping = SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); nullableEnum8.SetComparer(new NullableValueComparer(nullableEnum8.TypeMapping.Comparer)); - nullableEnum8.SetKeyComparer(new NullableValueComparer(nullableEnum8.TypeMapping.KeyComparer)); var nullableEnum8Array = runtimeEntityType.AddProperty( "NullableEnum8Array", @@ -8365,45 +6379,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8ArrayElementType = nullableEnum8Array.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8ArrayElementType.TypeMapping = nullableEnum8Array.TypeMapping.ElementTypeMapping; @@ -8442,26 +6436,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8AsString.TypeMapping = SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))); + EnumToNumberConverter.Instance)); nullableEnum8AsString.SetComparer(new NullableValueComparer(nullableEnum8AsString.TypeMapping.Comparer)); - nullableEnum8AsString.SetKeyComparer(new NullableValueComparer(nullableEnum8AsString.TypeMapping.KeyComparer)); var nullableEnum8AsStringArray = runtimeEntityType.AddProperty( "NullableEnum8AsStringArray", @@ -8495,45 +6478,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8AsStringArrayElementType = nullableEnum8AsStringArray.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8AsStringArrayElementType.TypeMapping = nullableEnum8AsStringArray.TypeMapping.ElementTypeMapping; @@ -8571,45 +6534,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8AsStringCollectionElementType = nullableEnum8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8AsStringCollectionElementType.TypeMapping = nullableEnum8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -8647,45 +6590,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnum8Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.Enum8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.Enum8>( new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)))), + EnumToNumberConverter.Instance)), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.Enum8 v1, CompiledModelTestBase.Enum8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.Enum8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.Enum8 (CompiledModelTestBase.Enum8 v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonSByteReaderWriter.Instance, - new ValueConverter(sbyte (CompiledModelTestBase.Enum8 value) => ((sbyte)value), CompiledModelTestBase.Enum8 (sbyte value) => ((CompiledModelTestBase.Enum8)value))))); + EnumToNumberConverter.Instance))); var nullableEnum8CollectionElementType = nullableEnum8Collection.SetElementType(typeof(CompiledModelTestBase.Enum8?), nullable: true); nullableEnum8CollectionElementType.TypeMapping = nullableEnum8Collection.TypeMapping.ElementTypeMapping; @@ -8724,26 +6647,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16.TypeMapping = UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); nullableEnumU16.SetComparer(new NullableValueComparer(nullableEnumU16.TypeMapping.Comparer)); - nullableEnumU16.SetKeyComparer(new NullableValueComparer(nullableEnumU16.TypeMapping.KeyComparer)); var nullableEnumU16Array = runtimeEntityType.AddProperty( "NullableEnumU16Array", @@ -8777,45 +6689,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16ArrayElementType = nullableEnumU16Array.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16ArrayElementType.TypeMapping = nullableEnumU16Array.TypeMapping.ElementTypeMapping; @@ -8854,26 +6746,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16AsString.TypeMapping = UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))); + EnumToNumberConverter.Instance)); nullableEnumU16AsString.SetComparer(new NullableValueComparer(nullableEnumU16AsString.TypeMapping.Comparer)); - nullableEnumU16AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU16AsString.TypeMapping.KeyComparer)); var nullableEnumU16AsStringArray = runtimeEntityType.AddProperty( "NullableEnumU16AsStringArray", @@ -8907,45 +6788,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16AsStringArrayElementType = nullableEnumU16AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16AsStringArrayElementType.TypeMapping = nullableEnumU16AsStringArray.TypeMapping.ElementTypeMapping; @@ -8983,45 +6844,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16AsStringCollectionElementType = nullableEnumU16AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16AsStringCollectionElementType.TypeMapping = nullableEnumU16AsStringCollection.TypeMapping.ElementTypeMapping; @@ -9059,45 +6900,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU16Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU16>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU16>( new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)))), + EnumToNumberConverter.Instance)), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU16 v1, CompiledModelTestBase.EnumU16 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU16 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU16 (CompiledModelTestBase.EnumU16 v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt16ReaderWriter.Instance, - new ValueConverter(ushort (CompiledModelTestBase.EnumU16 value) => ((ushort)value), CompiledModelTestBase.EnumU16 (ushort value) => ((CompiledModelTestBase.EnumU16)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU16CollectionElementType = nullableEnumU16Collection.SetElementType(typeof(CompiledModelTestBase.EnumU16?), nullable: true); nullableEnumU16CollectionElementType.TypeMapping = nullableEnumU16Collection.TypeMapping.ElementTypeMapping; @@ -9136,26 +6957,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32.TypeMapping = UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); nullableEnumU32.SetComparer(new NullableValueComparer(nullableEnumU32.TypeMapping.Comparer)); - nullableEnumU32.SetKeyComparer(new NullableValueComparer(nullableEnumU32.TypeMapping.KeyComparer)); var nullableEnumU32Array = runtimeEntityType.AddProperty( "NullableEnumU32Array", @@ -9189,45 +6999,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32ArrayElementType = nullableEnumU32Array.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32ArrayElementType.TypeMapping = nullableEnumU32Array.TypeMapping.ElementTypeMapping; @@ -9266,26 +7056,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32AsString.TypeMapping = UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))); + EnumToNumberConverter.Instance)); nullableEnumU32AsString.SetComparer(new NullableValueComparer(nullableEnumU32AsString.TypeMapping.Comparer)); - nullableEnumU32AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU32AsString.TypeMapping.KeyComparer)); var nullableEnumU32AsStringArray = runtimeEntityType.AddProperty( "NullableEnumU32AsStringArray", @@ -9319,45 +7098,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32AsStringArrayElementType = nullableEnumU32AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32AsStringArrayElementType.TypeMapping = nullableEnumU32AsStringArray.TypeMapping.ElementTypeMapping; @@ -9395,45 +7154,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32AsStringCollectionElementType = nullableEnumU32AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32AsStringCollectionElementType.TypeMapping = nullableEnumU32AsStringCollection.TypeMapping.ElementTypeMapping; @@ -9471,45 +7210,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU32Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU32>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU32>( new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)))), + EnumToNumberConverter.Instance)), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU32 v1, CompiledModelTestBase.EnumU32 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU32 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU32 (CompiledModelTestBase.EnumU32 v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt32ReaderWriter.Instance, - new ValueConverter(uint (CompiledModelTestBase.EnumU32 value) => ((uint)value), CompiledModelTestBase.EnumU32 (uint value) => ((CompiledModelTestBase.EnumU32)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU32CollectionElementType = nullableEnumU32Collection.SetElementType(typeof(CompiledModelTestBase.EnumU32?), nullable: true); nullableEnumU32CollectionElementType.TypeMapping = nullableEnumU32Collection.TypeMapping.ElementTypeMapping; @@ -9548,24 +7267,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64.TypeMapping = SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))); + EnumToNumberConverter.Instance)); nullableEnumU64.SetComparer(new NullableValueComparer(nullableEnumU64.TypeMapping.Comparer)); - nullableEnumU64.SetKeyComparer(new NullableValueComparer(nullableEnumU64.TypeMapping.KeyComparer)); var nullableEnumU64Array = runtimeEntityType.AddProperty( "NullableEnumU64Array", @@ -9599,43 +7307,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU64ArrayElementType = nullableEnumU64Array.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64ArrayElementType.TypeMapping = nullableEnumU64Array.TypeMapping.ElementTypeMapping; @@ -9674,24 +7362,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64AsString.TypeMapping = SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))); + EnumToNumberConverter.Instance)); nullableEnumU64AsString.SetComparer(new NullableValueComparer(nullableEnumU64AsString.TypeMapping.Comparer)); - nullableEnumU64AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU64AsString.TypeMapping.KeyComparer)); var nullableEnumU64AsStringArray = runtimeEntityType.AddProperty( "NullableEnumU64AsStringArray", @@ -9725,43 +7402,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU64AsStringArrayElementType = nullableEnumU64AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64AsStringArrayElementType.TypeMapping = nullableEnumU64AsStringArray.TypeMapping.ElementTypeMapping; @@ -9799,43 +7456,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU64AsStringCollectionElementType = nullableEnumU64AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64AsStringCollectionElementType.TypeMapping = nullableEnumU64AsStringCollection.TypeMapping.ElementTypeMapping; @@ -9873,43 +7510,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU64Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU64>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU64>( new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)))), + EnumToNumberConverter.Instance)), elementMapping: SqliteULongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU64 v1, CompiledModelTestBase.EnumU64 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU64 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU64 (CompiledModelTestBase.EnumU64 v) => v), - providerValueComparer: new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v), - converter: new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonUInt64ReaderWriter.Instance, - new ValueConverter(ulong (CompiledModelTestBase.EnumU64 value) => ((ulong)value), CompiledModelTestBase.EnumU64 (ulong value) => ((CompiledModelTestBase.EnumU64)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU64CollectionElementType = nullableEnumU64Collection.SetElementType(typeof(CompiledModelTestBase.EnumU64?), nullable: true); nullableEnumU64CollectionElementType.TypeMapping = nullableEnumU64Collection.TypeMapping.ElementTypeMapping; @@ -9948,26 +7565,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); nullableEnumU8.SetComparer(new NullableValueComparer(nullableEnumU8.TypeMapping.Comparer)); - nullableEnumU8.SetKeyComparer(new NullableValueComparer(nullableEnumU8.TypeMapping.KeyComparer)); var nullableEnumU8Array = runtimeEntityType.AddProperty( "NullableEnumU8Array", @@ -10001,45 +7607,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8ArrayElementType = nullableEnumU8Array.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8ArrayElementType.TypeMapping = nullableEnumU8Array.TypeMapping.ElementTypeMapping; @@ -10078,26 +7664,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8AsString.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))); + EnumToNumberConverter.Instance)); nullableEnumU8AsString.SetComparer(new NullableValueComparer(nullableEnumU8AsString.TypeMapping.Comparer)); - nullableEnumU8AsString.SetKeyComparer(new NullableValueComparer(nullableEnumU8AsString.TypeMapping.KeyComparer)); var nullableEnumU8AsStringArray = runtimeEntityType.AddProperty( "NullableEnumU8AsStringArray", @@ -10131,45 +7706,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8AsStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8AsStringArrayElementType = nullableEnumU8AsStringArray.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8AsStringArrayElementType.TypeMapping = nullableEnumU8AsStringArray.TypeMapping.ElementTypeMapping; @@ -10207,45 +7762,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8AsStringCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8AsStringCollectionElementType = nullableEnumU8AsStringCollection.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8AsStringCollectionElementType.TypeMapping = nullableEnumU8AsStringCollection.TypeMapping.ElementTypeMapping; @@ -10283,45 +7818,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableEnumU8Collection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - keyComparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer, CompiledModelTestBase.EnumU8>(new NullableValueComparer(ValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))), + EnumToNumberConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter, CompiledModelTestBase.EnumU8>( new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)))), + EnumToNumberConverter.Instance)), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.EnumU8 v1, CompiledModelTestBase.EnumU8 v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.EnumU8 v) => ((object)v).GetHashCode(), - CompiledModelTestBase.EnumU8 (CompiledModelTestBase.EnumU8 v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonByteReaderWriter.Instance, - new ValueConverter(byte (CompiledModelTestBase.EnumU8 value) => ((byte)value), CompiledModelTestBase.EnumU8 (byte value) => ((CompiledModelTestBase.EnumU8)value))))); + EnumToNumberConverter.Instance))); var nullableEnumU8CollectionElementType = nullableEnumU8Collection.SetElementType(typeof(CompiledModelTestBase.EnumU8?), nullable: true); nullableEnumU8CollectionElementType.TypeMapping = nullableEnumU8Collection.TypeMapping.ElementTypeMapping; @@ -10360,22 +7875,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableFloat.TypeMapping = FloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL")); nullableFloat.SetComparer(new NullableValueComparer(nullableFloat.TypeMapping.Comparer)); - nullableFloat.SetKeyComparer(new NullableValueComparer(nullableFloat.TypeMapping.KeyComparer)); var nullableFloatArray = runtimeEntityType.AddProperty( "NullableFloatArray", @@ -10409,35 +7911,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableFloatArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultFloatValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonFloatReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonFloatReaderWriter.Instance), elementMapping: FloatTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - keyComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), - providerValueComparer: new ValueComparer( - bool (float v1, float v2) => v1.Equals(v2), - int (float v) => ((object)v).GetHashCode(), - float (float v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL"))); var nullableFloatArrayElementType = nullableFloatArray.SetElementType(typeof(float?), @@ -10479,7 +7959,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableGuid.TypeMapping = SqliteGuidTypeMapping.Default; nullableGuid.SetComparer(new NullableValueComparer(nullableGuid.TypeMapping.Comparer)); - nullableGuid.SetKeyComparer(new NullableValueComparer(nullableGuid.TypeMapping.KeyComparer)); var nullableGuidArray = runtimeEntityType.AddProperty( "NullableGuidArray", @@ -10513,18 +7992,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableGuidArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (Guid v1, Guid v2) => v1 == v2, - int (Guid v) => ((object)v).GetHashCode(), - Guid (Guid v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( SqliteJsonGuidReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( @@ -10568,24 +8037,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableIPAddress.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))); + IPAddressToStringConverter.Instance)); var nullableIPAddressArray = runtimeEntityType.AddProperty( "NullableIPAddressArray", @@ -10619,45 +8078,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableIPAddressArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var nullableIPAddressArrayElementType = nullableIPAddressArray.SetElementType(typeof(IPAddress), nullable: true); nullableIPAddressArrayElementType.TypeMapping = nullableIPAddressArray.TypeMapping.ElementTypeMapping; @@ -10695,22 +8134,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt16.TypeMapping = ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableInt16.SetComparer(new NullableValueComparer(nullableInt16.TypeMapping.Comparer)); - nullableInt16.SetKeyComparer(new NullableValueComparer(nullableInt16.TypeMapping.KeyComparer)); var nullableInt16Array = runtimeEntityType.AddProperty( "NullableInt16Array", @@ -10744,35 +8170,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt16ReaderWriter.Instance), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableInt16ArrayElementType = nullableInt16Array.SetElementType(typeof(short?), @@ -10813,22 +8217,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt32.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableInt32.SetComparer(new NullableValueComparer(nullableInt32.TypeMapping.Comparer)); - nullableInt32.SetKeyComparer(new NullableValueComparer(nullableInt32.TypeMapping.KeyComparer)); var nullableInt32Array = runtimeEntityType.AddProperty( "NullableInt32Array", @@ -10862,35 +8253,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt32ReaderWriter.Instance), elementMapping: IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableInt32ArrayElementType = nullableInt32Array.SetElementType(typeof(int?), @@ -10931,22 +8300,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt64.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableInt64.SetComparer(new NullableValueComparer(nullableInt64.TypeMapping.Comparer)); - nullableInt64.SetKeyComparer(new NullableValueComparer(nullableInt64.TypeMapping.KeyComparer)); var nullableInt64Array = runtimeEntityType.AddProperty( "NullableInt64Array", @@ -10980,35 +8336,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonInt64ReaderWriter.Instance), elementMapping: LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableInt64ArrayElementType = nullableInt64Array.SetElementType(typeof(long?), @@ -11049,22 +8383,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt8.TypeMapping = SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableInt8.SetComparer(new NullableValueComparer(nullableInt8.TypeMapping.Comparer)); - nullableInt8.SetKeyComparer(new NullableValueComparer(nullableInt8.TypeMapping.KeyComparer)); var nullableInt8Array = runtimeEntityType.AddProperty( "NullableInt8Array", @@ -11098,35 +8419,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableInt8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonSByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonSByteReaderWriter.Instance), elementMapping: SByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - keyComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), - providerValueComparer: new ValueComparer( - bool (sbyte v1, sbyte v2) => v1 == v2, - int (sbyte v) => ((int)v), - sbyte (sbyte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableInt8ArrayElementType = nullableInt8Array.SetElementType(typeof(sbyte?), @@ -11167,24 +8466,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullablePhysicalAddress.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 20), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + PhysicalAddressToStringConverter.Instance)); var nullablePhysicalAddressArray = runtimeEntityType.AddProperty( "NullablePhysicalAddressArray", @@ -11218,45 +8507,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullablePhysicalAddressArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))), + PhysicalAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))), + PhysicalAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 20), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))); + PhysicalAddressToStringConverter.Instance))); var nullablePhysicalAddressArrayElementType = nullablePhysicalAddressArray.SetElementType(typeof(PhysicalAddress), nullable: true); nullablePhysicalAddressArrayElementType.TypeMapping = nullablePhysicalAddressArray.TypeMapping.ElementTypeMapping; @@ -11328,18 +8597,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableStringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( @@ -11383,7 +8642,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableTimeOnly.TypeMapping = SqliteTimeOnlyTypeMapping.Default; nullableTimeOnly.SetComparer(new NullableValueComparer(nullableTimeOnly.TypeMapping.Comparer)); - nullableTimeOnly.SetKeyComparer(new NullableValueComparer(nullableTimeOnly.TypeMapping.KeyComparer)); var nullableTimeOnlyArray = runtimeEntityType.AddProperty( "NullableTimeOnlyArray", @@ -11417,18 +8675,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableTimeOnlyArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonTimeOnlyReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( @@ -11472,22 +8720,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableTimeSpan.TypeMapping = TimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT")); nullableTimeSpan.SetComparer(new NullableValueComparer(nullableTimeSpan.TypeMapping.Comparer)); - nullableTimeSpan.SetKeyComparer(new NullableValueComparer(nullableTimeSpan.TypeMapping.KeyComparer)); var nullableTimeSpanArray = runtimeEntityType.AddProperty( "NullableTimeSpanArray", @@ -11521,35 +8756,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableTimeSpanArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonTimeSpanReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonTimeSpanReaderWriter.Instance), elementMapping: TimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT"))); var nullableTimeSpanArrayElementType = nullableTimeSpanArray.SetElementType(typeof(TimeSpan?), @@ -11590,22 +8803,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt16.TypeMapping = UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableUInt16.SetComparer(new NullableValueComparer(nullableUInt16.TypeMapping.Comparer)); - nullableUInt16.SetKeyComparer(new NullableValueComparer(nullableUInt16.TypeMapping.KeyComparer)); var nullableUInt16Array = runtimeEntityType.AddProperty( "NullableUInt16Array", @@ -11639,35 +8839,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUInt16ReaderWriter.Instance), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableUInt16ArrayElementType = nullableUInt16Array.SetElementType(typeof(ushort?), @@ -11708,22 +8886,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt32.TypeMapping = UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableUInt32.SetComparer(new NullableValueComparer(nullableUInt32.TypeMapping.Comparer)); - nullableUInt32.SetKeyComparer(new NullableValueComparer(nullableUInt32.TypeMapping.KeyComparer)); var nullableUInt32Array = runtimeEntityType.AddProperty( "NullableUInt32Array", @@ -11757,35 +8922,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonUInt32ReaderWriter.Instance), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableUInt32ArrayElementType = nullableUInt32Array.SetElementType(typeof(uint?), @@ -11827,7 +8970,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); nullableUInt64.TypeMapping = SqliteULongTypeMapping.Default; nullableUInt64.SetComparer(new NullableValueComparer(nullableUInt64.TypeMapping.Comparer)); - nullableUInt64.SetKeyComparer(new NullableValueComparer(nullableUInt64.TypeMapping.KeyComparer)); var nullableUInt64Array = runtimeEntityType.AddProperty( "NullableUInt64Array", @@ -11861,18 +9003,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonUInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( @@ -11916,22 +9048,9 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt8.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); nullableUInt8.SetComparer(new NullableValueComparer(nullableUInt8.TypeMapping.Comparer)); - nullableUInt8.SetKeyComparer(new NullableValueComparer(nullableUInt8.TypeMapping.KeyComparer)); var nullableUInt8Array = runtimeEntityType.AddProperty( "NullableUInt8Array", @@ -11965,35 +9084,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUInt8Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - keyComparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v))), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfNullableValueTypesComparer(new NullableValueComparer(DefaultValueComparer.Default)), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfNullableStructsReaderWriter( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var nullableUInt8ArrayElementType = nullableUInt8Array.SetElementType(typeof(byte?), @@ -12034,22 +9131,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUri.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + UriToStringConverter.Instance)); var nullableUriArray = runtimeEntityType.AddProperty( "NullableUriArray", @@ -12083,43 +9170,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); nullableUriArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))), + UriToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))), + UriToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))); + UriToStringConverter.Instance))); var nullableUriArrayElementType = nullableUriArray.SetElementType(typeof(Uri), nullable: true); nullableUriArrayElementType.TypeMapping = nullableUriArray.TypeMapping.ElementTypeMapping; @@ -12156,24 +9223,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddress.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 20), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))); + PhysicalAddressToStringConverter.Instance)); var physicalAddressArray = runtimeEntityType.AddProperty( "PhysicalAddressArray", @@ -12207,45 +9264,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddressArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))), + PhysicalAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)))), + PhysicalAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 20), - converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), + converter: PhysicalAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v))))); + PhysicalAddressToStringConverter.Instance))); var physicalAddressArrayElementType = physicalAddressArray.SetElementType(typeof(PhysicalAddress)); physicalAddressArrayElementType.TypeMapping = physicalAddressArray.TypeMapping.ElementTypeMapping; @@ -12282,18 +9319,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddressToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: ValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, mappingInfo: new RelationalTypeMappingInfo( size: 8), converter: new ValueConverter(byte[] (PhysicalAddress v) => v.GetAddressBytes(), PhysicalAddress (byte[] v) => new PhysicalAddress(v)), @@ -12334,18 +9361,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); physicalAddressToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - keyComparer: new ValueComparer( - bool (PhysicalAddress v1, PhysicalAddress v2) => object.Equals(v1, v2), - int (PhysicalAddress v) => ((object)v).GetHashCode(), - PhysicalAddress (PhysicalAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 20), converter: new ValueConverter(string (PhysicalAddress v) => ((object)v).ToString(), PhysicalAddress (string v) => PhysicalAddress.Parse(v)), @@ -12418,18 +9435,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( @@ -12470,18 +9477,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -12523,18 +9520,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToBoolConverterProperty.TypeMapping = BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(bool (string v) => Convert.ToBoolean(v), string (bool v) => Convert.ToString(v)), @@ -12575,18 +9562,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToBytesConverterProperty.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), + comparer: DefaultValueComparer.Default, + providerValueComparer: ValueComparer.DefaultWithStructuralComparisons, converter: new ValueConverter(byte[] (string v) => Encoding.GetEncoding(12000).GetBytes(v), string (byte[] v) => Encoding.GetEncoding(12000).GetString(v)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( SqliteJsonByteArrayReaderWriter.Instance, @@ -12625,18 +9602,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToCharConverterProperty.TypeMapping = CharTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (char v1, char v2) => v1 == v2, - int (char v) => ((int)v), - char (char v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT", size: 1), @@ -12678,18 +9645,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDateOnlyConverterProperty.TypeMapping = SqliteDateOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateOnly v1, DateOnly v2) => v1.Equals(v2), - int (DateOnly v) => ((object)v).GetHashCode(), - DateOnly (DateOnly v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 10), converter: new ValueConverter(DateOnly (string v) => DateOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (DateOnly v) => v.ToString("yyyy\\-MM\\-dd")), @@ -12730,18 +9687,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDateTimeConverterProperty.TypeMapping = SqliteDateTimeTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(DateTime (string v) => DateTime.Parse(v, CultureInfo.InvariantCulture), string (DateTime v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFF")), @@ -12782,18 +9729,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDateTimeOffsetConverterProperty.TypeMapping = SqliteDateTimeOffsetTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (DateTimeOffset v1, DateTimeOffset v2) => v1.EqualsExact(v2), - int (DateTimeOffset v) => ((object)v).GetHashCode(), - DateTimeOffset (DateTimeOffset v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultDateTimeOffsetValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(DateTimeOffset (string v) => DateTimeOffset.Parse(v, CultureInfo.InvariantCulture), string (DateTimeOffset v) => v.ToString("yyyy\\-MM\\-dd HH\\:mm\\:ss.FFFFFFFzzz")), @@ -12834,18 +9771,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDecimalNumberConverterProperty.TypeMapping = SqliteDecimalTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (decimal v1, decimal v2) => v1 == v2, - int (decimal v) => ((object)v).GetHashCode(), - decimal (decimal v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 64), converter: new ValueConverter(decimal (string v) => decimal.Parse(v, NumberStyles.Any, CultureInfo.InvariantCulture), string (decimal v) => string.Format(CultureInfo.InvariantCulture, "{0}", ((object)v))), @@ -12886,18 +9813,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToDoubleNumberConverterProperty.TypeMapping = DoubleTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (double v1, double v2) => v1.Equals(v2), - int (double v) => ((object)v).GetHashCode(), - double (double v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultDoubleValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "REAL", size: 64), @@ -12939,18 +9856,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToEnumConverterProperty.TypeMapping = UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(uint (string v) => ((uint)(StringEnumConverter.ConvertToEnum(v))), string (uint value) => ((object)((CompiledModelTestBase.EnumU32)value)).ToString()), @@ -13024,18 +9931,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToIntNumberConverterProperty.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER", size: 64), @@ -13077,18 +9974,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToTimeOnlyConverterProperty.TypeMapping = SqliteTimeOnlyTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None), string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o"))), @@ -13129,18 +10016,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToTimeSpanConverterProperty.TypeMapping = TimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT", size: 48), @@ -13182,18 +10059,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); stringToUriConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString(), string (string v) => ((object)new Uri(v, UriKind.RelativeOrAbsolute)).ToString()), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, @@ -13265,18 +10131,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeOnlyArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonTimeOnlyReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -13318,18 +10174,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeOnlyToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(string (TimeOnly v) => (v.Ticks % 10000000L == 0L ? string.Format(CultureInfo.InvariantCulture, "{0:HH\\:mm\\:ss}", ((object)v)) : v.ToString("o")), TimeOnly (string v) => TimeOnly.Parse(v, CultureInfo.InvariantCulture, DateTimeStyles.None)), @@ -13371,18 +10217,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeOnlyToTicksConverterProperty.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - keyComparer: new ValueComparer( - bool (TimeOnly v1, TimeOnly v2) => v1.Equals(v2), - int (TimeOnly v) => ((object)v).GetHashCode(), - TimeOnly (TimeOnly v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(long (TimeOnly v) => v.Ticks, TimeOnly (long v) => new TimeOnly(v)), @@ -13424,18 +10260,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpan.TypeMapping = TimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT")); @@ -13471,35 +10295,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpanArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonTimeSpanReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonTimeSpanReaderWriter.Instance), elementMapping: TimeSpanTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "TEXT"))); var timeSpanArrayElementType = timeSpanArray.SetElementType(typeof(TimeSpan)); @@ -13538,18 +10340,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpanToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 48), converter: new ValueConverter(string (TimeSpan v) => v.ToString("c"), TimeSpan (string v) => TimeSpan.Parse(v, CultureInfo.InvariantCulture)), @@ -13591,18 +10383,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); timeSpanToTicksConverterProperty.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - keyComparer: new ValueComparer( - bool (TimeSpan v1, TimeSpan v2) => v1.Equals(v2), - int (TimeSpan v) => ((object)v).GetHashCode(), - TimeSpan (TimeSpan v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), converter: new ValueConverter(long (TimeSpan v) => v.Ticks, TimeSpan (long v) => new TimeSpan(v)), @@ -13644,18 +10426,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt16.TypeMapping = UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -13691,35 +10461,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt16Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUInt16ReaderWriter.Instance), elementMapping: UShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - keyComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), - providerValueComparer: new ValueComparer( - bool (ushort v1, ushort v2) => v1 == v2, - int (ushort v) => ((int)v), - ushort (ushort v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var uInt16ArrayElementType = uInt16Array.SetElementType(typeof(ushort)); @@ -13758,18 +10506,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt32.TypeMapping = UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -13805,35 +10541,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt32Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUInt32ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( JsonUInt32ReaderWriter.Instance), elementMapping: UIntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - keyComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), - providerValueComparer: new ValueComparer( - bool (uint v1, uint v2) => v1 == v2, - int (uint v) => ((int)v), - uint (uint v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var uInt32ArrayElementType = uInt32Array.SetElementType(typeof(uint)); @@ -13905,18 +10619,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt64Array.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (ulong v1, ulong v2) => v1 == v2, - int (ulong v) => ((object)v).GetHashCode(), - ulong (ulong v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( JsonUInt64ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -13958,18 +10662,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt8.TypeMapping = ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -14005,18 +10697,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt8Array.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var uInt8ReadOnlyCollection = runtimeEntityType.AddProperty( "UInt8ReadOnlyCollection", @@ -14050,35 +10731,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uInt8ReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var uInt8ReadOnlyCollectionElementType = uInt8ReadOnlyCollection.SetElementType(typeof(byte)); @@ -14116,22 +10775,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uri.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))); + UriToStringConverter.Instance)); var uriArray = runtimeEntityType.AddProperty( "UriArray", @@ -14165,43 +10814,23 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uriArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))), + UriToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)))), + UriToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, + converter: UriToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute))))); + UriToStringConverter.Instance))); var uriArrayElementType = uriArray.SetElementType(typeof(Uri)); uriArrayElementType.TypeMapping = uriArray.TypeMapping.ElementTypeMapping; @@ -14238,18 +10867,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); uriToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - keyComparer: new ValueComparer( - bool (Uri v1, Uri v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (Uri v) => ((object)v).GetHashCode(), - Uri (Uri v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, converter: new ValueConverter(string (Uri v) => ((object)v).ToString(), Uri (string v) => new Uri(v, UriKind.RelativeOrAbsolute)), jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs index 17eb73352c6..386107727e7 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs @@ -53,18 +53,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); principalDerivedId.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); @@ -107,18 +95,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 2, storeGenerationIndex: 2); __synthesizedOrdinal.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); __synthesizedOrdinal.SetCurrentValueComparer(new EntryCurrentValueComparer(__synthesizedOrdinal)); @@ -190,18 +166,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); number.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -238,45 +202,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -313,18 +257,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -366,18 +300,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -419,45 +343,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -494,18 +398,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( SqliteJsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -547,35 +441,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); @@ -614,35 +486,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); @@ -681,35 +531,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs index 2c28378ba37..1a5d428eb13 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs @@ -55,18 +55,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); principalBaseId.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); @@ -160,18 +148,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); number.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -209,45 +185,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -285,18 +241,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -339,18 +285,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -393,45 +329,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -469,18 +385,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( SqliteJsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -523,35 +429,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); @@ -591,35 +475,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); @@ -659,35 +521,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs index fcfa8706343..f5476344a99 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs @@ -74,23 +74,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: -1); id.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); id.SetComparer(new NullableValueComparer(id.TypeMapping.Comparer)); - id.SetKeyComparer(new NullableValueComparer(id.TypeMapping.KeyComparer)); var alternateId = runtimeEntityType.AddProperty( "AlternateId", @@ -180,24 +167,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum1.SetSentinelFromProviderValue(0); var enum2 = runtimeEntityType.AddProperty( @@ -233,26 +210,15 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); enum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AnEnum v1, CompiledModelTestBase.AnEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AnEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AnEnum (CompiledModelTestBase.AnEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AnEnum value) => ((int)value), CompiledModelTestBase.AnEnum (int value) => ((CompiledModelTestBase.AnEnum)value)))); + EnumToNumberConverter.Instance)); enum2.SetComparer(new NullableValueComparer(enum2.TypeMapping.Comparer)); - enum2.SetKeyComparer(new NullableValueComparer(enum2.TypeMapping.KeyComparer)); var flagsEnum1 = runtimeEntityType.AddProperty( "FlagsEnum1", @@ -286,24 +252,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum1.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum1.SetSentinelFromProviderValue(0); var flagsEnum2 = runtimeEntityType.AddProperty( @@ -339,24 +295,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); flagsEnum2.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - keyComparer: new ValueComparer( - bool (CompiledModelTestBase.AFlagsEnum v1, CompiledModelTestBase.AFlagsEnum v2) => object.Equals(((object)v1), ((object)v2)), - int (CompiledModelTestBase.AFlagsEnum v) => ((object)v).GetHashCode(), - CompiledModelTestBase.AFlagsEnum (CompiledModelTestBase.AFlagsEnum v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"), - converter: new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)), + converter: EnumToNumberConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonInt32ReaderWriter.Instance, - new ValueConverter(int (CompiledModelTestBase.AFlagsEnum value) => ((int)value), CompiledModelTestBase.AFlagsEnum (int value) => ((CompiledModelTestBase.AFlagsEnum)value)))); + EnumToNumberConverter.Instance)); flagsEnum2.SetSentinelFromProviderValue(6); var point = runtimeEntityType.AddProperty( @@ -415,45 +361,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeArrayElementType = refTypeArray.SetElementType(typeof(IPAddress)); refTypeArrayElementType.TypeMapping = refTypeArray.TypeMapping.ElementTypeMapping; @@ -490,18 +416,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeEnumerable.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -543,18 +459,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeIList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, string>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( @@ -596,45 +502,25 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); refTypeList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfReferenceTypesComparer, IPAddress>(ValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))), + IPAddressToStringConverter.Instance))), jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)))), + IPAddressToStringConverter.Instance)), elementMapping: SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - keyComparer: new ValueComparer( - bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), - int (IPAddress v) => ((object)v).GetHashCode(), - IPAddress (IPAddress v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: ValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 45), - converter: new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v)), + converter: IPAddressToStringConverter.Instance, jsonValueReaderWriter: new JsonConvertedValueReaderWriter( JsonStringReaderWriter.Instance, - new ValueConverter(string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + IPAddressToStringConverter.Instance))); var refTypeListElementType = refTypeList.SetElementType(typeof(IPAddress)); refTypeListElementType.TypeMapping = refTypeList.TypeMapping.ElementTypeMapping; @@ -671,18 +557,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeArray.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - keyComparer: new ListOfValueTypesComparer(new ValueComparer( - bool (DateTime v1, DateTime v2) => v1.Equals(v2), - int (DateTime v) => ((object)v).GetHashCode(), - DateTime (DateTime v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter( SqliteJsonDateTimeReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter( @@ -724,35 +600,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeEnumerable.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeEnumerableElementType = valueTypeEnumerable.SetElementType(typeof(byte)); @@ -791,35 +645,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeIList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, byte>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( JsonByteReaderWriter.Instance), elementMapping: ByteTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - keyComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), - providerValueComparer: new ValueComparer( - bool (byte v1, byte v2) => v1 == v2, - int (byte v) => ((int)v), - byte (byte v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeIListElementType = valueTypeIList.SetElementType(typeof(byte)); @@ -858,35 +690,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); valueTypeList.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - keyComparer: new ListOfValueTypesComparer, short>(new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v)), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: new ListOfValueTypesComparer, short>(DefaultValueComparer.Default), + providerValueComparer: DefaultValueComparer.Default, converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance)), jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, short>( JsonInt16ReaderWriter.Instance), elementMapping: ShortTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - keyComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), - providerValueComparer: new ValueComparer( - bool (short v1, short v2) => v1 == v2, - int (short v) => ((int)v), - short (short v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); var valueTypeListElementType = valueTypeList.SetElementType(typeof(short)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index fae0247115a..fb5c26160f8 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; @@ -91,18 +89,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); derivedsId.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); @@ -221,18 +207,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 2, storeGenerationIndex: 2); principalsId.TypeMapping = LongTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - keyComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), - providerValueComparer: new ValueComparer( - bool (long v1, long v2) => v1 == v2, - int (long v) => ((object)v).GetHashCode(), - long (long v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); @@ -331,18 +305,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: 4); rowid.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var key = runtimeEntityType.AddKey( new[] { derivedsId, derivedsAlternateId, principalsId, principalsAlternateId }); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs index 00eea3177f6..642fa495388 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -48,18 +46,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -97,18 +83,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); blob.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var key = runtimeEntityType.AddKey( new[] { id }); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Custom_function_parameter_type_mapping/FunctionParameterTypeMappingContextModelBuilder.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Custom_function_parameter_type_mapping/FunctionParameterTypeMappingContextModelBuilder.cs index bb8b63c6ecb..4d48bdd28ae 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Custom_function_parameter_type_mapping/FunctionParameterTypeMappingContextModelBuilder.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Custom_function_parameter_type_mapping/FunctionParameterTypeMappingContextModelBuilder.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Reflection; using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata.Internal; @@ -47,18 +46,6 @@ partial void Initialize() false, "varchar"); param.TypeMapping = StringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varchar", dbType: System.Data.DbType.AnsiString)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Custom_function_type_mapping/FunctionTypeMappingContextModelBuilder.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Custom_function_type_mapping/FunctionTypeMappingContextModelBuilder.cs index cb8c609bfde..de90b9b4e2e 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Custom_function_type_mapping/FunctionTypeMappingContextModelBuilder.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Custom_function_type_mapping/FunctionTypeMappingContextModelBuilder.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Reflection; using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata.Internal; @@ -49,18 +48,6 @@ partial void Initialize() param.TypeMapping = SqliteStringTypeMapping.Default; getSqlFragmentStatic.TypeMapping = StringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - keyComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "varchar", dbType: System.Data.DbType.AnsiString)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/DbFunctions/DataEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/DbFunctions/DataEntityType.cs index 90b174d6aa6..ef4cf00cfdf 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/DbFunctions/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/DbFunctions/DataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -61,18 +59,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); blob.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); return runtimeEntityType; } diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/DbFunctions/DbFunctionContextModelBuilder.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/DbFunctions/DbFunctionContextModelBuilder.cs index e9c02ef562a..e459e02786d 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/DbFunctions/DbFunctionContextModelBuilder.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/DbFunctions/DbFunctionContextModelBuilder.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata.Internal; @@ -77,18 +76,6 @@ partial void Initialize() condition.TypeMapping = SqliteStringTypeMapping.Default; getCount.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); functions["Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelRelationalTestBase+DbFunctionContext.GetCount(System.Guid?,string)"] = getCount; @@ -125,18 +112,6 @@ partial void Initialize() false, "INTEGER"); id0.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); @@ -166,18 +141,6 @@ partial void Initialize() date.TypeMapping = SqliteStringTypeMapping.Default; isDateStatic.TypeMapping = BoolTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); isDateStatic.AddAnnotation("MyGuid", new Guid("00000000-0000-0000-0000-000000000000")); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs index 00eea3177f6..642fa495388 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -48,18 +46,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -97,18 +83,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); blob.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var key = runtimeEntityType.AddKey( new[] { id }); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs index 0c79aee3ab0..5d1bf932cd0 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs @@ -6,6 +6,7 @@ using System.Reflection; using System.Text; using Microsoft.EntityFrameworkCore.ChangeTracking; +using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Scaffolding; @@ -68,18 +69,8 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolToStringConverterProperty", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); boolToStringConverterProperty.TypeMapping = SqliteStringTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - keyComparer: new ValueComparer( - bool (bool v1, bool v2) => v1 == v2, - int (bool v) => ((object)v).GetHashCode(), - bool (bool v) => v), - providerValueComparer: new ValueComparer( - bool (string v1, string v2) => v1 == v2, - int (string v) => ((object)v).GetHashCode(), - string (string v) => v), + comparer: DefaultValueComparer.Default, + providerValueComparer: DefaultValueComparer.Default, mappingInfo: new RelationalTypeMappingInfo( size: 1), converter: new ValueConverter(string (bool v) => ((string)((v ? "B" : "A"))), bool (string v) => !(string.IsNullOrEmpty(v)) && ((int)(v.ToUpperInvariant()[0])) == ((int)("B".ToUpperInvariant()[0]))), diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/AuthorEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/AuthorEntityType.cs index b3e5976919a..4f01a050032 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/AuthorEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/AuthorEntityType.cs @@ -47,18 +47,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); postId.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); postId.SetCurrentValueComparer(new EntryCurrentValueComparer(postId)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/BlogEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/BlogEntityType.cs index 42f6af2509a..dd372271be0 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/BlogEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/BlogEntityType.cs @@ -63,18 +63,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/PostEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/PostEntityType.cs index eb217b08e01..c31cc5a7c98 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/PostEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Owned_entity_sharing_table_with_owner_that_has_an_index/PostEntityType.cs @@ -66,18 +66,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -98,18 +86,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 1, storeGenerationIndex: 1); blogId.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); blogId.SetCurrentValueComparer(new EntryCurrentValueComparer(blogId)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs index 02044f269a5..1b277d2f7c2 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs @@ -62,18 +62,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: -1); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs index 5c7a835f87c..fc026f1536e 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs @@ -1,8 +1,6 @@ // using System; -using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; @@ -49,18 +47,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: 0, storeGenerationIndex: 0); id.TypeMapping = IntTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - keyComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), - providerValueComparer: new ValueComparer( - bool (int v1, int v2) => v1 == v2, - int (int v) => v, - int (int v) => v), mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); @@ -98,18 +84,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas relationshipIndex: -1, storeGenerationIndex: -1); blob.TypeMapping = SqliteByteArrayTypeMapping.Default.Clone( - comparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => ((object)v).GetHashCode(), - byte[] (byte[] v) => v), - keyComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray()), - providerValueComparer: new ValueComparer( - bool (byte[] v1, byte[] v2) => StructuralComparisons.StructuralEqualityComparer.Equals(((object)v1), ((object)v2)), - int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)v)), - byte[] (byte[] source) => source.ToArray())); + ); var key = runtimeEntityType.AddKey( new[] { id });