From f9154bd9a0eff8f9cd0e6f9359f23615bcf25e76 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 13 Jun 2026 00:45:32 +0000 Subject: [PATCH 1/4] Initial plan From 27ca255e175331d02ecd6f0043bb618a0cafe79e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 13 Jun 2026 01:17:29 +0000 Subject: [PATCH 2/4] Flow generic type arg to avoid reflective default key comparer creation (AOT) Co-authored-by: AndriySvyryd <6539701+AndriySvyryd@users.noreply.github.com> --- .../SimplePrincipalKeyValueFactory.cs | 7 +- src/EFCore/Metadata/IProperty.cs | 6 +- src/EFCore/Metadata/RuntimeProperty.cs | 14 ++++ src/EFCore/Storage/CoreTypeMapping.cs | 10 +++ .../Metadata/RuntimePropertyTest.cs | 64 +++++++++++++++++++ 5 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 test/EFCore.Tests/Metadata/RuntimePropertyTest.cs diff --git a/src/EFCore/ChangeTracking/Internal/SimplePrincipalKeyValueFactory.cs b/src/EFCore/ChangeTracking/Internal/SimplePrincipalKeyValueFactory.cs index f39e2d5747a..c3dcf65fdc4 100644 --- a/src/EFCore/ChangeTracking/Internal/SimplePrincipalKeyValueFactory.cs +++ b/src/EFCore/ChangeTracking/Internal/SimplePrincipalKeyValueFactory.cs @@ -27,7 +27,12 @@ public SimplePrincipalKeyValueFactory(IKey key) _key = key; var property = key.Properties.Single(); _propertyAccessors = property.GetPropertyAccessors(); - EqualityComparer = new NoNullsCustomEqualityComparer((ValueComparer)property.GetKeyValueComparer()); + + var keyValueComparer = property is RuntimeProperty runtimeProperty + ? runtimeProperty.GetKeyValueComparer( + static () => ValueComparer.CreateDefault(favorStructuralComparisons: true)) + : property.GetKeyValueComparer(); + EqualityComparer = new NoNullsCustomEqualityComparer((ValueComparer)keyValueComparer); } /// diff --git a/src/EFCore/Metadata/IProperty.cs b/src/EFCore/Metadata/IProperty.cs index 29f6bcdbb8b..fc86b63c9d6 100644 --- a/src/EFCore/Metadata/IProperty.cs +++ b/src/EFCore/Metadata/IProperty.cs @@ -19,7 +19,11 @@ public interface IProperty : IReadOnlyProperty, IPropertyBase /// The property type. /// A new equality comparer. IEqualityComparer CreateKeyEqualityComparer() - => NullableComparerAdapter.Wrap(GetKeyValueComparer()); + => NullableComparerAdapter.Wrap( + this is RuntimeProperty runtimeProperty + ? runtimeProperty.GetKeyValueComparer( + static () => ValueComparer.CreateDefault(favorStructuralComparisons: true)) + : GetKeyValueComparer()); /// /// Finds the first principal property that the given property is constrained by diff --git a/src/EFCore/Metadata/RuntimeProperty.cs b/src/EFCore/Metadata/RuntimeProperty.cs index c508c376d4a..a367e8ea59e 100644 --- a/src/EFCore/Metadata/RuntimeProperty.cs +++ b/src/EFCore/Metadata/RuntimeProperty.cs @@ -305,6 +305,20 @@ public virtual ValueComparer GetKeyValueComparer() static property => (property.GetValueComparer(null) ?? property.TypeMapping.KeyComparer) .ToNullableComparer(property.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 + /// 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. + /// + [EntityFrameworkInternal] + public virtual ValueComparer GetKeyValueComparer(Func defaultKeyValueComparerFactory) + => NonCapturingLazyInitializer.EnsureInitialized( + ref _keyValueComparer, this, defaultKeyValueComparerFactory, + static (property, factory) => + (property.GetValueComparer(null) ?? property.TypeMapping.FindKeyComparer() ?? factory()) + .ToNullableComparer(property.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/Storage/CoreTypeMapping.cs b/src/EFCore/Storage/CoreTypeMapping.cs index 4ee4f02dba3..89673d9d59f 100644 --- a/src/EFCore/Storage/CoreTypeMapping.cs +++ b/src/EFCore/Storage/CoreTypeMapping.cs @@ -246,6 +246,16 @@ public virtual ValueComparer KeyComparer this, static c => ValueComparer.CreateDefault(c.ClrType, favorStructuralComparisons: true)); + /// + /// Returns the used with keys for this type mapping if one has already been + /// configured or created, without creating a default one. This avoids the reflection-based default comparer + /// creation that is not compatible with NativeAOT. + /// + /// The key , or if none has been set. + [EntityFrameworkInternal] + public virtual ValueComparer? FindKeyComparer() + => _keyComparer; + /// /// A for the provider CLR type values. /// diff --git a/test/EFCore.Tests/Metadata/RuntimePropertyTest.cs b/test/EFCore.Tests/Metadata/RuntimePropertyTest.cs new file mode 100644 index 00000000000..11474055019 --- /dev/null +++ b/test/EFCore.Tests/Metadata/RuntimePropertyTest.cs @@ -0,0 +1,64 @@ +// 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.InMemory.Storage.Internal; + +// ReSharper disable InconsistentNaming +namespace Microsoft.EntityFrameworkCore.Metadata; + +public class RuntimePropertyTest +{ + [Fact] + public void GetKeyValueComparer_with_default_factory_does_not_create_type_mapping_key_comparer() + { + var typeMapping = new InMemoryTypeMapping(typeof(Guid)); + var property = CreateProperty("Id", typeof(Guid), typeMapping); + + Assert.Null(typeMapping.FindKeyComparer()); + + var comparer = property.GetKeyValueComparer( + static () => ValueComparer.CreateDefault(favorStructuralComparisons: true)); + + // The supplied generic factory is used instead of the reflection-based default on the type mapping. + Assert.Null(typeMapping.FindKeyComparer()); + + var comparer1 = Assert.IsAssignableFrom>(comparer); + var value = Guid.NewGuid(); + Assert.True(comparer1.Equals(value, value)); + Assert.False(comparer1.Equals(value, Guid.NewGuid())); + } + + [Fact] + public void GetKeyValueComparer_with_default_factory_uses_comparer_from_the_model() + { + var keyComparer = new ValueComparer(favorStructuralComparisons: false); + var typeMapping = new InMemoryTypeMapping(typeof(Guid), keyComparer: keyComparer); + var property = CreateProperty("Id", typeof(Guid), typeMapping); + + var comparer = property.GetKeyValueComparer( + static () => throw new InvalidOperationException("The default factory should not be called.")); + + Assert.Same(keyComparer, comparer); + } + + [Fact] + public void GetKeyValueComparer_without_factory_creates_type_mapping_key_comparer() + { + var typeMapping = new InMemoryTypeMapping(typeof(Guid)); + var property = CreateProperty("Id", typeof(Guid), typeMapping); + + Assert.Null(typeMapping.FindKeyComparer()); + + var comparer = property.GetKeyValueComparer(); + + Assert.NotNull(comparer); + Assert.NotNull(typeMapping.FindKeyComparer()); + } + + private static RuntimeProperty CreateProperty(string name, Type clrType, CoreTypeMapping typeMapping) + { + var model = new RuntimeModel(skipDetectChanges: false, modelId: Guid.NewGuid(), entityTypeCount: 1); + var entityType = model.AddEntityType("E", typeof(object), propertyCount: 1); + return entityType.AddProperty(name, clrType, typeMapping: typeMapping); + } +} From f48d0fb2226731823080afd985644543a585c923 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 13 Jun 2026 04:39:32 +0000 Subject: [PATCH 3/4] Move AOT key comparer fix into compiled model generation Co-authored-by: AndriySvyryd <6539701+AndriySvyryd@users.noreply.github.com> --- .../CSharpRuntimeModelCodeGenerator.cs | 46 ++++++- .../SimplePrincipalKeyValueFactory.cs | 7 +- src/EFCore/Metadata/IProperty.cs | 6 +- src/EFCore/Metadata/RuntimeProperty.cs | 14 -- src/EFCore/Storage/CoreTypeMapping.cs | 10 -- .../Basic_cosmos_model/DataEntityType.cs | 1 + .../BigModel/DependentBaseEntityType.cs | 2 + .../BigModel/OwnedType0EntityType.cs | 3 + .../Baselines/BigModel/OwnedTypeEntityType.cs | 2 + .../BigModel/PrincipalBaseEntityType.cs | 1 + ...cipalDerivedDependentBasebyteEntityType.cs | 4 + .../IndexedDataEntityType.cs | 2 + .../SimpleModel/DependentDerivedEntityType.cs | 1 + .../BigModel/DependentBaseEntityType.cs | 2 + .../BigModel/OwnedType0EntityType.cs | 3 + .../Baselines/BigModel/OwnedTypeEntityType.cs | 2 + .../BigModel/PrincipalBaseEntityType.cs | 1 + ...cipalDerivedDependentBasebyteEntityType.cs | 4 + .../MyEntityEntityType.cs | 1 + .../Custom_type_mapping/MyEntityEntityType.cs | 1 + .../MyEntityEntityType.cs | 1 + .../IdentityUserEntityType.cs | 1 + .../Fully_qualified_model/IndexEntityType.cs | 1 + .../ScaffoldingEntityType.cs | 1 + .../Baselines/Global_namespace/EntityType1.cs | 1 + .../LazyProxiesEntity3EntityType.cs | 1 + .../LazyProxiesEntity4EntityType.cs | 2 + .../LazyProxiesEntity1EntityType.cs | 1 + .../LazyProxiesEntity2EntityType.cs | 1 + .../LazyConstructorEntityEntityType.cs | 1 + .../LazyPropertyDelegateEntityEntityType.cs | 2 + .../LazyPropertyEntityEntityType.cs | 2 + .../DbContextAssemblyAttributes.cs | 9 ++ .../DbContextModel.cs | 47 +++++++ .../DbContextModelBuilder.cs | 25 ++++ .../IndexEntityType.cs | 130 ++++++++++++++++++ .../IndexUnsafeAccessors.cs | 15 ++ .../DependentBaseEntityType.cs | 1 + .../PrincipalBaseEntityType.cs | 1 + .../SelfReferentialEntityEntityType.cs | 1 + .../SimpleModel/DependentDerivedEntityType.cs | 1 + .../Scaffolding/CompiledModelInMemoryTest.cs | 15 ++ .../BigModel/DependentBaseEntityType.cs | 2 + .../BigModel/OwnedType0EntityType.cs | 3 + .../Baselines/BigModel/OwnedTypeEntityType.cs | 2 + .../BigModel/PrincipalBaseEntityType.cs | 1 + ...cipalDerivedDependentBasebyteEntityType.cs | 4 + .../DependentBaseEntityType.cs | 2 + .../OwnedType0EntityType.cs | 3 + .../OwnedTypeEntityType.cs | 2 + .../PrincipalBaseEntityType.cs | 1 + ...cipalDerivedDependentBasebyteEntityType.cs | 4 + .../CheckConstraints/DataEntityType.cs | 1 + .../Dynamic_schema/DataEntityType.cs | 1 + .../FullTextEntityEntityType.cs | 1 + .../Key_HiLo_sequence/DataEntityType.cs | 1 + .../Baselines/Key_sequence/DataEntityType.cs | 1 + .../SimpleModel/DependentDerivedEntityType.cs | 1 + .../SpatialTypesEntityType.cs | 1 + .../Baselines/Triggers/DataEntityType.cs | 1 + .../VectorIndexEntityEntityType.cs | 1 + .../BigModel/AutoIncrementEntityEntityType.cs | 1 + .../Baselines/BigModel/DataEntityType.cs | 1 + .../BigModel/DependentBaseEntityType.cs | 2 + .../BigModel/OwnedType0EntityType.cs | 3 + .../Baselines/BigModel/OwnedTypeEntityType.cs | 2 + .../BigModel/PrincipalBaseEntityType.cs | 1 + ...cipalDerivedDependentBasebyteEntityType.cs | 4 + .../AutoIncrementEntityEntityType.cs | 1 + .../DataEntityType.cs | 1 + .../DependentBaseEntityType.cs | 2 + .../OwnedType0EntityType.cs | 3 + .../OwnedTypeEntityType.cs | 2 + .../PrincipalBaseEntityType.cs | 1 + ...cipalDerivedDependentBasebyteEntityType.cs | 4 + .../CheckConstraints/DataEntityType.cs | 1 + .../Dynamic_schema/DataEntityType.cs | 1 + .../SimpleModel/DependentDerivedEntityType.cs | 1 + .../Baselines/Triggers/DataEntityType.cs | 1 + .../Metadata/RuntimePropertyTest.cs | 64 --------- 80 files changed, 398 insertions(+), 104 deletions(-) create mode 100644 test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/DbContextAssemblyAttributes.cs create mode 100644 test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/DbContextModel.cs create mode 100644 test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/DbContextModelBuilder.cs create mode 100644 test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/IndexEntityType.cs create mode 100644 test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/IndexUnsafeAccessors.cs delete mode 100644 test/EFCore.Tests/Metadata/RuntimePropertyTest.cs diff --git a/src/EFCore.Design/Scaffolding/Internal/CSharpRuntimeModelCodeGenerator.cs b/src/EFCore.Design/Scaffolding/Internal/CSharpRuntimeModelCodeGenerator.cs index d06a982a176..c50abf16b7f 100644 --- a/src/EFCore.Design/Scaffolding/Internal/CSharpRuntimeModelCodeGenerator.cs +++ b/src/EFCore.Design/Scaffolding/Internal/CSharpRuntimeModelCodeGenerator.cs @@ -1254,11 +1254,30 @@ private void Create( var keyValueComparer = property.GetKeyValueComparer(); var typeMappingKeyComparer = property.GetTypeMapping().KeyComparer; - if (valueComparer != keyValueComparer - && (!parameters.ForNativeAot || keyValueComparer != typeMappingKeyComparer) - && (parameters.ForNativeAot || property[CoreAnnotationNames.ValueComparer] != null)) - { - SetValueComparer(keyValueComparer, typeMappingKeyComparer, nameof(CoreTypeMapping.KeyComparer), propertyParameters); + var needsDefaultKeyComparer = parameters.ForNativeAot + && (property.IsKey() + || property.IsForeignKey() + || property.IsUniqueIndex()) + && keyValueComparer == typeMappingKeyComparer + && keyValueComparer.IsDefault() + && keyValueComparer.Type == property.ClrType; + if ((valueComparer != keyValueComparer + && (!parameters.ForNativeAot || keyValueComparer != typeMappingKeyComparer) + && (parameters.ForNativeAot || property[CoreAnnotationNames.ValueComparer] != null)) + || needsDefaultKeyComparer) + { + if (needsDefaultKeyComparer) + { + SetDefaultValueComparer( + property.ClrType, + favorStructuralComparisons: true, + nameof(CoreTypeMapping.KeyComparer), + propertyParameters); + } + else + { + SetValueComparer(keyValueComparer, typeMappingKeyComparer, nameof(CoreTypeMapping.KeyComparer), propertyParameters); + } } var providerValueComparer = property.GetProviderValueComparer(); @@ -1429,6 +1448,23 @@ private string CreateValueComparerType(Type valueComparerType, Type clrType, CSh return valueComparerString; } + private void SetDefaultValueComparer( + Type clrType, + bool favorStructuralComparisons, + string typeMappingComparerProperty, + CSharpRuntimeAnnotationCodeGeneratorParameters parameters) + { + AddNamespace(typeof(ValueComparer), parameters.Namespaces); + + parameters.MainBuilder + .Append(parameters.TargetName) + .Append(".Set").Append(typeMappingComparerProperty).Append("(ValueComparer.CreateDefault<") + .Append(_code.Reference(clrType)) + .Append(">(favorStructuralComparisons: ") + .Append(_code.Literal(favorStructuralComparisons)) + .AppendLine("));"); + } + private void SetValueComparer( ValueComparer valueComparer, ValueComparer typeMappingComparer, diff --git a/src/EFCore/ChangeTracking/Internal/SimplePrincipalKeyValueFactory.cs b/src/EFCore/ChangeTracking/Internal/SimplePrincipalKeyValueFactory.cs index c3dcf65fdc4..f39e2d5747a 100644 --- a/src/EFCore/ChangeTracking/Internal/SimplePrincipalKeyValueFactory.cs +++ b/src/EFCore/ChangeTracking/Internal/SimplePrincipalKeyValueFactory.cs @@ -27,12 +27,7 @@ public SimplePrincipalKeyValueFactory(IKey key) _key = key; var property = key.Properties.Single(); _propertyAccessors = property.GetPropertyAccessors(); - - var keyValueComparer = property is RuntimeProperty runtimeProperty - ? runtimeProperty.GetKeyValueComparer( - static () => ValueComparer.CreateDefault(favorStructuralComparisons: true)) - : property.GetKeyValueComparer(); - EqualityComparer = new NoNullsCustomEqualityComparer((ValueComparer)keyValueComparer); + EqualityComparer = new NoNullsCustomEqualityComparer((ValueComparer)property.GetKeyValueComparer()); } /// diff --git a/src/EFCore/Metadata/IProperty.cs b/src/EFCore/Metadata/IProperty.cs index fc86b63c9d6..29f6bcdbb8b 100644 --- a/src/EFCore/Metadata/IProperty.cs +++ b/src/EFCore/Metadata/IProperty.cs @@ -19,11 +19,7 @@ public interface IProperty : IReadOnlyProperty, IPropertyBase /// The property type. /// A new equality comparer. IEqualityComparer CreateKeyEqualityComparer() - => NullableComparerAdapter.Wrap( - this is RuntimeProperty runtimeProperty - ? runtimeProperty.GetKeyValueComparer( - static () => ValueComparer.CreateDefault(favorStructuralComparisons: true)) - : GetKeyValueComparer()); + => NullableComparerAdapter.Wrap(GetKeyValueComparer()); /// /// Finds the first principal property that the given property is constrained by diff --git a/src/EFCore/Metadata/RuntimeProperty.cs b/src/EFCore/Metadata/RuntimeProperty.cs index a367e8ea59e..c508c376d4a 100644 --- a/src/EFCore/Metadata/RuntimeProperty.cs +++ b/src/EFCore/Metadata/RuntimeProperty.cs @@ -305,20 +305,6 @@ public virtual ValueComparer GetKeyValueComparer() static property => (property.GetValueComparer(null) ?? property.TypeMapping.KeyComparer) .ToNullableComparer(property.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 - /// 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. - /// - [EntityFrameworkInternal] - public virtual ValueComparer GetKeyValueComparer(Func defaultKeyValueComparerFactory) - => NonCapturingLazyInitializer.EnsureInitialized( - ref _keyValueComparer, this, defaultKeyValueComparerFactory, - static (property, factory) => - (property.GetValueComparer(null) ?? property.TypeMapping.FindKeyComparer() ?? factory()) - .ToNullableComparer(property.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/Storage/CoreTypeMapping.cs b/src/EFCore/Storage/CoreTypeMapping.cs index 89673d9d59f..4ee4f02dba3 100644 --- a/src/EFCore/Storage/CoreTypeMapping.cs +++ b/src/EFCore/Storage/CoreTypeMapping.cs @@ -246,16 +246,6 @@ public virtual ValueComparer KeyComparer this, static c => ValueComparer.CreateDefault(c.ClrType, favorStructuralComparisons: true)); - /// - /// Returns the used with keys for this type mapping if one has already been - /// configured or created, without creating a default one. This avoids the reflection-based default comparer - /// creation that is not compatible with NativeAOT. - /// - /// The key , or if none has been set. - [EntityFrameworkInternal] - public virtual ValueComparer? FindKeyComparer() - => _keyComparer; - /// /// A for the provider CLR type values. /// 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 94d29b3d3c9..37b6b10c81a 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 @@ -67,6 +67,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var partitionId = runtimeEntityType.AddProperty( "PartitionId", diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs index f4679a38a7e..908d2b24253 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs @@ -70,6 +70,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); + principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalAlternateId = runtimeEntityType.AddProperty( "PrincipalAlternateId", @@ -108,6 +109,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); + principalAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalAlternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var enumDiscriminator = runtimeEntityType.AddProperty( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index 4fe5b38523f..e4def4f3b2c 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -68,6 +68,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); + principalDerivedId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalDerivedAlternateId = runtimeEntityType.AddProperty( "PrincipalDerivedAlternateId", @@ -106,6 +107,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); + principalDerivedAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalDerivedAlternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var id = runtimeEntityType.AddProperty( @@ -142,6 +144,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index ba87978f771..32f5489a25a 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -70,6 +70,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); + principalBaseId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalBaseAlternateId = runtimeEntityType.AddProperty( "PrincipalBaseAlternateId", @@ -109,6 +110,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); + principalBaseAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalBaseAlternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var details = runtimeEntityType.AddProperty( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index 06643bad1a0..323a98f2518 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -142,6 +142,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas Guid (string v) => new Guid(v)), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); + alternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); alternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var type = runtimeEntityType.AddProperty( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index d9d7d3e8a99..c8b08635ab0 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -111,6 +111,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); + derivedsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var derivedsAlternateId = runtimeEntityType.AddProperty( "DerivedsAlternateId", @@ -189,6 +190,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); + derivedsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsId = runtimeEntityType.AddProperty( "PrincipalsId", @@ -261,6 +263,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); + principalsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsAlternateId = runtimeEntityType.AddProperty( "PrincipalsAlternateId", @@ -339,6 +342,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); + principalsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var type = runtimeEntityType.AddProperty( "$type", 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 20b27fe660b..4ec86d47821 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 @@ -87,6 +87,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var partitionId = runtimeEntityType.AddProperty( "PartitionId", @@ -136,6 +137,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(string), jsonValueReaderWriter: JsonStringReaderWriter.Instance); partitionId.SetCurrentValueComparer(new EntryCurrentValueComparer(partitionId)); + partitionId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var type = runtimeEntityType.AddProperty( "$type", diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs index 84ccae895e1..f32940579fe 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs @@ -82,6 +82,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var type = runtimeEntityType.AddProperty( "$type", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs index 41b05d2f3a1..7f11f4afbfe 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs @@ -67,6 +67,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); + principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalAlternateId = runtimeEntityType.AddProperty( "PrincipalAlternateId", @@ -100,6 +101,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); + principalAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var enumDiscriminator = runtimeEntityType.AddProperty( "EnumDiscriminator", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index be1f12f022a..04956b5ed26 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -66,6 +66,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); + principalDerivedId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalDerivedAlternateId = runtimeEntityType.AddProperty( "PrincipalDerivedAlternateId", @@ -99,6 +100,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); + principalDerivedAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var id = runtimeEntityType.AddProperty( "Id", @@ -133,6 +135,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index 0b8d7239051..d355b95cf95 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -68,6 +68,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); + principalBaseId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalBaseAlternateId = runtimeEntityType.AddProperty( "PrincipalBaseAlternateId", @@ -102,6 +103,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); + principalBaseAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index f150d6b05a4..5c4c6bc39a6 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -138,6 +138,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); + alternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var discriminator = runtimeEntityType.AddProperty( "Discriminator", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index 51876ed82f8..fcf936c2acf 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -105,6 +105,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); + derivedsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var derivedsAlternateId = runtimeEntityType.AddProperty( "DerivedsAlternateId", @@ -177,6 +178,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); + derivedsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsId = runtimeEntityType.AddProperty( "PrincipalsId", @@ -249,6 +251,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); + principalsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsAlternateId = runtimeEntityType.AddProperty( "PrincipalsAlternateId", @@ -321,6 +324,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); + principalsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var rowid = runtimeEntityType.AddProperty( "rowid", 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..92ee650f318 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 @@ -103,6 +103,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.SetProviderValueComparer(new ValueComparer( bool (int l, int r) => false, int (int v) => 0, 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..58ee9c50b79 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 @@ -102,6 +102,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { id }); 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 bcfa3e50cad..a3762f5f589 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 @@ -110,6 +110,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (int i) => JsonSerializer.Serialize(i, (JsonSerializerOptions)(null)), int (string i) => JsonSerializer.Deserialize(i, (JsonSerializerOptions)(null))))); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { id }); 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..d4fe8afdf91 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 @@ -80,6 +80,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(string), jsonValueReaderWriter: JsonStringReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var accessFailedCount = runtimeEntityType.AddProperty( "AccessFailedCount", 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..ca8c24fa08d 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 @@ -78,6 +78,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { 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..6a8eb95ff0c 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 @@ -78,6 +78,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { 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..7100a0ca22e 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Global_namespace/EntityType1.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Global_namespace/EntityType1.cs @@ -100,6 +100,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { 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..8ba905590f1 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 @@ -79,6 +79,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var name = runtimeEntityType.AddProperty( "Name", 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..bbfd103530b 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 @@ -81,6 +81,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var content = runtimeEntityType.AddProperty( "Content", @@ -161,6 +162,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); referenceNavigationId.SetCurrentValueComparer(new EntryCurrentValueComparer(referenceNavigationId)); + referenceNavigationId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var title = runtimeEntityType.AddProperty( "Title", 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..f3f87c402ea 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 @@ -83,6 +83,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var referenceNavigationId = runtimeEntityType.AddProperty( "ReferenceNavigationId", 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..7921ce022e3 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 @@ -80,6 +80,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var loader = runtimeEntityType.AddServiceProperty( "Loader", 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..64c9bac34ba 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 @@ -80,6 +80,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var _loader = runtimeEntityType.AddServiceProperty( "_loader", 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..50503399973 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 @@ -82,6 +82,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var lazyConstructorEntityId = runtimeEntityType.AddProperty( "LazyConstructorEntityId", @@ -131,6 +132,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); lazyConstructorEntityId.SetCurrentValueComparer(new EntryCurrentValueComparer(lazyConstructorEntityId)); + lazyConstructorEntityId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var lazyLoader = runtimeEntityType.AddServiceProperty( "LazyLoader", 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..6fdea89ba45 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 @@ -82,6 +82,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var lazyConstructorEntityId = runtimeEntityType.AddProperty( "LazyConstructorEntityId", @@ -131,6 +132,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); lazyConstructorEntityId.SetCurrentValueComparer(new EntryCurrentValueComparer(lazyConstructorEntityId)); + lazyConstructorEntityId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var loader = runtimeEntityType.AddServiceProperty( "Loader", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/DbContextAssemblyAttributes.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/DbContextAssemblyAttributes.cs new file mode 100644 index 00000000000..c32d233bbdb --- /dev/null +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/DbContextAssemblyAttributes.cs @@ -0,0 +1,9 @@ +// +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using TestNamespace; + +#pragma warning disable 219, 612, 618 +#nullable disable + +[assembly: DbContextModel(typeof(DbContext), typeof(DbContextModel), ProviderName = "Microsoft.EntityFrameworkCore.InMemory")] diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/DbContextModel.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/DbContextModel.cs new file mode 100644 index 00000000000..e5896994b93 --- /dev/null +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/DbContextModel.cs @@ -0,0 +1,47 @@ +// +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; + +#pragma warning disable 219, 612, 618 +#nullable disable + +namespace TestNamespace; + +[DbContext(typeof(DbContext))] +public partial class DbContextModel : RuntimeModel +{ + private static readonly bool _useOldBehavior31751 = + System.AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue31751", out var enabled31751) && enabled31751; + + static DbContextModel() + { + var model = new DbContextModel(); + + if (_useOldBehavior31751) + { + model.Initialize(); + } + else + { + var thread = new System.Threading.Thread(RunInitialization, 10 * 1024 * 1024); + thread.Start(); + thread.Join(); + + void RunInitialization() + { + model.Initialize(); + } + } + + model.Customize(); + _instance = (DbContextModel)model.FinalizeModel(); + } + + private static DbContextModel _instance; + public static IModel Instance => _instance; + + partial void Initialize(); + + partial void Customize(); +} diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/DbContextModelBuilder.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/DbContextModelBuilder.cs new file mode 100644 index 00000000000..bddee0d2e7d --- /dev/null +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/DbContextModelBuilder.cs @@ -0,0 +1,25 @@ +// +using System; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; + +#pragma warning disable 219, 612, 618 +#nullable disable + +namespace TestNamespace; + +public partial class DbContextModel +{ + private DbContextModel() + : base(skipDetectChanges: false, modelId: new Guid("00000000-0000-0000-0000-000000000000"), entityTypeCount: 1) + { + } + + partial void Initialize() + { + var index = IndexEntityType.Create(this); + + IndexEntityType.CreateAnnotations(index); + + } +} diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/IndexEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/IndexEntityType.cs new file mode 100644 index 00000000000..db5a24dc773 --- /dev/null +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/IndexEntityType.cs @@ -0,0 +1,130 @@ +// +using System; +using System.Collections.Generic; +using System.Reflection; +using Microsoft.EntityFrameworkCore.ChangeTracking; +using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; +using Microsoft.EntityFrameworkCore.InMemory.Storage.Internal; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Metadata.Internal; +using Microsoft.EntityFrameworkCore.Scaffolding; +using Microsoft.EntityFrameworkCore.Storage.Json; + +#pragma warning disable 219, 612, 618 +#nullable disable + +namespace TestNamespace; + +[EntityFrameworkInternal] +public partial class IndexEntityType +{ + public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType baseEntityType = null) + { + var runtimeEntityType = model.AddEntityType( + "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelInMemoryTest+Index", + typeof(CompiledModelInMemoryTest.Index), + baseEntityType, + propertyCount: 1, + keyCount: 1); + + var id = runtimeEntityType.AddProperty( + "Id", + typeof(Guid), + propertyInfo: typeof(CompiledModelInMemoryTest.Index).GetProperty("Id", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelInMemoryTest.Index).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly), + valueGenerated: ValueGenerated.OnAdd, + afterSaveBehavior: PropertySaveBehavior.Throw, + sentinel: new Guid("00000000-0000-0000-0000-000000000000")); + id.SetGetter( + Guid (CompiledModelInMemoryTest.Index instance) => IndexUnsafeAccessors.Id(instance), + bool (CompiledModelInMemoryTest.Index instance) => IndexUnsafeAccessors.Id(instance) == new Guid("00000000-0000-0000-0000-000000000000")); + id.SetSetter( + CompiledModelInMemoryTest.Index (CompiledModelInMemoryTest.Index instance, Guid value) => + { + IndexUnsafeAccessors.Id(instance) = value; + return instance; + }); + id.SetMaterializationSetter( + CompiledModelInMemoryTest.Index (CompiledModelInMemoryTest.Index instance, Guid value) => + { + IndexUnsafeAccessors.Id(instance) = value; + return instance; + }); + id.SetAccessors( + Guid (IInternalEntry entry) => (entry.FlaggedAsStoreGenerated(0) ? entry.ReadStoreGeneratedValue(0) : (entry.FlaggedAsTemporary(0) && IndexUnsafeAccessors.Id(((CompiledModelInMemoryTest.Index)(entry.Entity))) == new Guid("00000000-0000-0000-0000-000000000000") ? entry.ReadTemporaryValue(0) : IndexUnsafeAccessors.Id(((CompiledModelInMemoryTest.Index)(entry.Entity))))), + Guid (IInternalEntry entry) => IndexUnsafeAccessors.Id(((CompiledModelInMemoryTest.Index)(entry.Entity))), + Guid (IInternalEntry entry) => entry.ReadOriginalValue(id, 0), + Guid (IInternalEntry entry) => ((InternalEntityEntry)entry).ReadRelationshipSnapshotValue(id, 0)); + id.SetPropertyIndexes( + index: 0, + originalValueIndex: 0, + 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), + jsonValueReaderWriter: JsonGuidReaderWriter.Instance); + id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); + + var key = runtimeEntityType.AddKey( + new[] { id }); + runtimeEntityType.SetPrimaryKey(key); + + return runtimeEntityType; + } + + public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) + { + var id = runtimeEntityType.FindProperty("Id"); + var key = runtimeEntityType.FindKey(new[] { id }); + key.SetPrincipalKeyValueFactory(KeyValueFactoryFactory.CreateSimpleNonNullableFactory(key)); + key.SetIdentityMapFactory(IdentityMapFactoryFactory.CreateFactory(key)); + runtimeEntityType.SetOriginalValuesFactory( + ISnapshot (IInternalEntry source) => + { + var structuralType = ((CompiledModelInMemoryTest.Index)(source.Entity)); + return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))))); + }); + runtimeEntityType.SetStoreGeneratedValuesFactory( + ISnapshot () => ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(default(Guid)))))); + runtimeEntityType.SetTemporaryValuesFactory( + ISnapshot (IInternalEntry source) => ((ISnapshot)(new Snapshot(default(Guid))))); + runtimeEntityType.SetShadowValuesFactory( + ISnapshot (IDictionary source) => Snapshot.Empty); + runtimeEntityType.SetEmptyShadowValuesFactory( + ISnapshot () => Snapshot.Empty); + runtimeEntityType.SetRelationshipSnapshotFactory( + ISnapshot (IInternalEntry source) => + { + var structuralType = ((CompiledModelInMemoryTest.Index)(source.Entity)); + return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))))); + }); + runtimeEntityType.SetCounts(new PropertyCounts( + propertyCount: 1, + navigationCount: 0, + complexPropertyCount: 0, + complexCollectionCount: 0, + originalValueCount: 1, + shadowCount: 0, + relationshipCount: 1, + storeGeneratedCount: 1)); + + Customize(runtimeEntityType); + } + + static partial void Customize(RuntimeEntityType runtimeEntityType); +} diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/IndexUnsafeAccessors.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/IndexUnsafeAccessors.cs new file mode 100644 index 00000000000..0b6a51075fe --- /dev/null +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/IndexUnsafeAccessors.cs @@ -0,0 +1,15 @@ +// +using System; +using System.Runtime.CompilerServices; +using Microsoft.EntityFrameworkCore.Scaffolding; + +#pragma warning disable 219, 612, 618 +#nullable disable + +namespace TestNamespace; + +public static class IndexUnsafeAccessors +{ + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] + public static extern ref Guid Id(CompiledModelInMemoryTest.Index @this); +} diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/DependentBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/DependentBaseEntityType.cs index a7673970c85..2b4c34d7448 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/DependentBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/DependentBaseEntityType.cs @@ -115,6 +115,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); + principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { id }); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/PrincipalBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/PrincipalBaseEntityType.cs index 1343549ec58..5fd53da562a 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/PrincipalBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/PrincipalBaseEntityType.cs @@ -298,6 +298,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); + principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var refTypeArray = runtimeEntityType.AddProperty( "RefTypeArray", 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 66a7f2e5bfe..00b50870ebd 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 @@ -79,6 +79,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var collection = runtimeEntityType.AddProperty( "Collection", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs index 6c39098e2b7..489cb4bd918 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs @@ -77,6 +77,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var data = runtimeEntityType.AddProperty( "Data", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/CompiledModelInMemoryTest.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/CompiledModelInMemoryTest.cs index 254cecb2d74..1547bdb056c 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/CompiledModelInMemoryTest.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/CompiledModelInMemoryTest.cs @@ -60,6 +60,21 @@ public virtual Task Self_referential_property() } ); + [Fact] + public virtual Task NativeAOT_default_key_comparer_is_emitted() + => Test( + modelBuilder => modelBuilder.Entity(), + model => + { + var id = model.FindEntityType(typeof(Index))!.FindProperty(nameof(Index.Id))!; + var comparer = Assert.IsAssignableFrom>(id.GetKeyValueComparer()); + var value = Guid.NewGuid(); + + Assert.True(comparer.Equals(value, value)); + Assert.False(comparer.Equals(value, Guid.NewGuid())); + }, + options: new CompiledModelCodeGenerationOptions { UseNullableReferenceTypes = true, ForNativeAot = true }); + public class SelfReferentialEntity where T : struct { diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs index ae8aab36198..3cc5510bbbc 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs @@ -68,6 +68,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); + principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalAlternateId = runtimeEntityType.AddProperty( @@ -102,6 +103,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); + principalAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var enumDiscriminator = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index 85912024390..67cfb3358a0 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -65,6 +65,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); + principalDerivedId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalDerivedId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalDerivedAlternateId = runtimeEntityType.AddProperty( @@ -99,6 +100,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); + principalDerivedAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalDerivedAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var id = runtimeEntityType.AddProperty( @@ -132,6 +134,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var details = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index 72f3c000844..9d43d1df8a4 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -68,6 +68,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); + principalBaseId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var overrides = new StoreObjectDictionary(); var principalBaseIdPrincipalBase = new RuntimeRelationalPropertyOverrides( @@ -114,6 +115,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); + principalBaseAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalBaseAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var details = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index 503437810e6..c5bc91910bf 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -148,6 +148,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); + alternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); alternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var enum1 = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index b6b4f83beea..3fbd7dc6c2c 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -104,6 +104,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); + derivedsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); derivedsId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var derivedsAlternateId = runtimeEntityType.AddProperty( @@ -177,6 +178,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); + derivedsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); derivedsAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalsId = runtimeEntityType.AddProperty( @@ -248,6 +250,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); + principalsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalsId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalsAlternateId = runtimeEntityType.AddProperty( @@ -321,6 +324,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); + principalsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalsAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var rowid = runtimeEntityType.AddProperty( 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 ae8aab36198..3cc5510bbbc 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 @@ -68,6 +68,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); + principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalAlternateId = runtimeEntityType.AddProperty( @@ -102,6 +103,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); + principalAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var enumDiscriminator = runtimeEntityType.AddProperty( 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 8edcc31edc9..ca83ce0d423 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 @@ -65,6 +65,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); + principalDerivedId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalDerivedId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalDerivedAlternateId = runtimeEntityType.AddProperty( @@ -99,6 +100,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); + principalDerivedAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalDerivedAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var __synthesizedOrdinal = runtimeEntityType.AddProperty( @@ -133,6 +135,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); __synthesizedOrdinal.SetCurrentValueComparer(new EntryCurrentValueComparer(__synthesizedOrdinal)); + __synthesizedOrdinal.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); __synthesizedOrdinal.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var details = runtimeEntityType.AddProperty( 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 d6b88b66023..5472d66d525 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 @@ -67,6 +67,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); + principalBaseId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalBaseId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalBaseAlternateId = runtimeEntityType.AddProperty( @@ -102,6 +103,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); + principalBaseAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalBaseAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var details = runtimeEntityType.AddProperty( 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 310e6a7fad7..ad6dae70250 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 @@ -139,6 +139,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); + alternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); alternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var discriminator = runtimeEntityType.AddProperty( 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..3fbd7dc6c2c 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 @@ -104,6 +104,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); + derivedsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); derivedsId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var derivedsAlternateId = runtimeEntityType.AddProperty( @@ -177,6 +178,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); + derivedsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); derivedsAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalsId = runtimeEntityType.AddProperty( @@ -248,6 +250,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); + principalsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalsId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalsAlternateId = runtimeEntityType.AddProperty( @@ -321,6 +324,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); + principalsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalsAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var rowid = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs index b1913db5baa..55e3b0d2afc 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs @@ -61,6 +61,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var blob = runtimeEntityType.AddProperty( 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..55e3b0d2afc 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs @@ -61,6 +61,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var blob = runtimeEntityType.AddProperty( 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..dfac7c8e2cf 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 @@ -77,6 +77,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var title = runtimeEntityType.AddProperty( 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..17ba3029990 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 @@ -61,6 +61,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:HiLoSequenceName", "HL"); id.AddAnnotation("SqlServer:HiLoSequenceSchema", "S"); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.SequenceHiLo); 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..dede8a50309 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Key_sequence/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Key_sequence/DataEntityType.cs @@ -61,6 +61,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("Relational:DefaultValueSql", "NEXT VALUE FOR [KeySeqSchema].[KeySeq]"); id.AddAnnotation("SqlServer:SequenceName", "KeySeq"); id.AddAnnotation("SqlServer:SequenceSchema", "KeySeqSchema"); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs index 7059bafc9f0..a4d058d5b31 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs @@ -75,6 +75,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var data = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SpatialTypesTest/SpatialTypesEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SpatialTypesTest/SpatialTypesEntityType.cs index 9498128f9a8..f3e0b4394a5 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SpatialTypesTest/SpatialTypesEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SpatialTypesTest/SpatialTypesEntityType.cs @@ -77,6 +77,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var point = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs index 2d767899d9b..016bd814801 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs @@ -62,6 +62,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var blob = runtimeEntityType.AddProperty( 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..3d7bc1d6bec 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Vector_index/VectorIndexEntityEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Vector_index/VectorIndexEntityEntityType.cs @@ -78,6 +78,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var vector = runtimeEntityType.AddProperty( diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/AutoIncrementEntityEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/AutoIncrementEntityEntityType.cs index de8114f2299..f73fc386287 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/AutoIncrementEntityEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/AutoIncrementEntityEntityType.cs @@ -78,6 +78,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var name = runtimeEntityType.AddProperty( "Name", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DataEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DataEntityType.cs index 7908e4ddeb7..4bf3b905c9a 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DataEntityType.cs @@ -64,6 +64,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var blob = runtimeEntityType.AddProperty( "Blob", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs index cbd35f37e96..59c0471b3cb 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs @@ -70,6 +70,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); + principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalAlternateId = runtimeEntityType.AddProperty( "PrincipalAlternateId", @@ -89,6 +90,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); principalAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); + principalAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var enumDiscriminator = runtimeEntityType.AddProperty( "EnumDiscriminator", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index 9c652fea578..de95c9fba8e 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -68,6 +68,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); + principalDerivedId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalDerivedAlternateId = runtimeEntityType.AddProperty( "PrincipalDerivedAlternateId", @@ -87,6 +88,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); principalDerivedAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); + principalDerivedAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var id = runtimeEntityType.AddProperty( "Id", @@ -121,6 +123,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index 518bd1e9f86..ab85b85236a 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -70,6 +70,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); + principalBaseId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var overrides = new StoreObjectDictionary(); var principalBaseIdPrincipalBase = new RuntimeRelationalPropertyOverrides( @@ -100,6 +101,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); principalBaseAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); + principalBaseAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index ef000e05e30..ff8f85ed4bd 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -136,6 +136,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); alternateId.TypeMapping = SqliteGuidTypeMapping.Default; alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); + alternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var enum1 = runtimeEntityType.AddProperty( "Enum1", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index fae0247115a..24864723ef5 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -106,6 +106,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); + derivedsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var derivedsAlternateId = runtimeEntityType.AddProperty( "DerivedsAlternateId", @@ -164,6 +165,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); derivedsAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); + derivedsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsId = runtimeEntityType.AddProperty( "PrincipalsId", @@ -236,6 +238,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); + principalsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsAlternateId = runtimeEntityType.AddProperty( "PrincipalsAlternateId", @@ -294,6 +297,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 3); principalsAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); + principalsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var rowid = runtimeEntityType.AddProperty( "rowid", 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..f73fc386287 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 @@ -78,6 +78,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var name = runtimeEntityType.AddProperty( "Name", 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..4bf3b905c9a 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 @@ -64,6 +64,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var blob = runtimeEntityType.AddProperty( "Blob", 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 cbd35f37e96..59c0471b3cb 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 @@ -70,6 +70,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); + principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalAlternateId = runtimeEntityType.AddProperty( "PrincipalAlternateId", @@ -89,6 +90,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); principalAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); + principalAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var enumDiscriminator = runtimeEntityType.AddProperty( "EnumDiscriminator", 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 8da8aab2594..68443e5d465 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 @@ -68,6 +68,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); + principalDerivedId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalDerivedAlternateId = runtimeEntityType.AddProperty( "PrincipalDerivedAlternateId", @@ -87,6 +88,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); principalDerivedAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); + principalDerivedAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var __synthesizedOrdinal = runtimeEntityType.AddProperty( "__synthesizedOrdinal", @@ -122,6 +124,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); __synthesizedOrdinal.SetCurrentValueComparer(new EntryCurrentValueComparer(__synthesizedOrdinal)); + __synthesizedOrdinal.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", 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 3ef1ee07e73..199f5d10e4d 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 @@ -70,6 +70,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); + principalBaseId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalBaseAlternateId = runtimeEntityType.AddProperty( "PrincipalBaseAlternateId", @@ -90,6 +91,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); principalBaseAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); + principalBaseAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", 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 0b1d43bb873..09e4d29dee6 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 @@ -128,6 +128,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); alternateId.TypeMapping = SqliteGuidTypeMapping.Default; alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); + alternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var discriminator = runtimeEntityType.AddProperty( "Discriminator", 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..24864723ef5 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 @@ -106,6 +106,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); + derivedsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var derivedsAlternateId = runtimeEntityType.AddProperty( "DerivedsAlternateId", @@ -164,6 +165,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); derivedsAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); + derivedsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsId = runtimeEntityType.AddProperty( "PrincipalsId", @@ -236,6 +238,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); + principalsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsAlternateId = runtimeEntityType.AddProperty( "PrincipalsAlternateId", @@ -294,6 +297,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 3); principalsAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); + principalsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var rowid = runtimeEntityType.AddProperty( "rowid", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs index 00eea3177f6..70a55b6b355 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs @@ -63,6 +63,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var blob = runtimeEntityType.AddProperty( "Blob", 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..70a55b6b355 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs @@ -63,6 +63,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var blob = runtimeEntityType.AddProperty( "Blob", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs index 02044f269a5..a88936d3b18 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs @@ -77,6 +77,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var data = runtimeEntityType.AddProperty( "Data", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs index 5c7a835f87c..ddf49d2be5d 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs @@ -64,6 +64,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); + id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var blob = runtimeEntityType.AddProperty( "Blob", diff --git a/test/EFCore.Tests/Metadata/RuntimePropertyTest.cs b/test/EFCore.Tests/Metadata/RuntimePropertyTest.cs deleted file mode 100644 index 11474055019..00000000000 --- a/test/EFCore.Tests/Metadata/RuntimePropertyTest.cs +++ /dev/null @@ -1,64 +0,0 @@ -// 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.InMemory.Storage.Internal; - -// ReSharper disable InconsistentNaming -namespace Microsoft.EntityFrameworkCore.Metadata; - -public class RuntimePropertyTest -{ - [Fact] - public void GetKeyValueComparer_with_default_factory_does_not_create_type_mapping_key_comparer() - { - var typeMapping = new InMemoryTypeMapping(typeof(Guid)); - var property = CreateProperty("Id", typeof(Guid), typeMapping); - - Assert.Null(typeMapping.FindKeyComparer()); - - var comparer = property.GetKeyValueComparer( - static () => ValueComparer.CreateDefault(favorStructuralComparisons: true)); - - // The supplied generic factory is used instead of the reflection-based default on the type mapping. - Assert.Null(typeMapping.FindKeyComparer()); - - var comparer1 = Assert.IsAssignableFrom>(comparer); - var value = Guid.NewGuid(); - Assert.True(comparer1.Equals(value, value)); - Assert.False(comparer1.Equals(value, Guid.NewGuid())); - } - - [Fact] - public void GetKeyValueComparer_with_default_factory_uses_comparer_from_the_model() - { - var keyComparer = new ValueComparer(favorStructuralComparisons: false); - var typeMapping = new InMemoryTypeMapping(typeof(Guid), keyComparer: keyComparer); - var property = CreateProperty("Id", typeof(Guid), typeMapping); - - var comparer = property.GetKeyValueComparer( - static () => throw new InvalidOperationException("The default factory should not be called.")); - - Assert.Same(keyComparer, comparer); - } - - [Fact] - public void GetKeyValueComparer_without_factory_creates_type_mapping_key_comparer() - { - var typeMapping = new InMemoryTypeMapping(typeof(Guid)); - var property = CreateProperty("Id", typeof(Guid), typeMapping); - - Assert.Null(typeMapping.FindKeyComparer()); - - var comparer = property.GetKeyValueComparer(); - - Assert.NotNull(comparer); - Assert.NotNull(typeMapping.FindKeyComparer()); - } - - private static RuntimeProperty CreateProperty(string name, Type clrType, CoreTypeMapping typeMapping) - { - var model = new RuntimeModel(skipDetectChanges: false, modelId: Guid.NewGuid(), entityTypeCount: 1); - var entityType = model.AddEntityType("E", typeof(object), propertyCount: 1); - return entityType.AddProperty(name, clrType, typeMapping: typeMapping); - } -} From 6a5387f0f82ea2e8b0ebd3a1023fad1a8d6302c5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Jun 2026 00:12:49 +0000 Subject: [PATCH 4/4] Refine AOT compiled model key comparer generation Co-authored-by: AndriySvyryd <6539701+AndriySvyryd@users.noreply.github.com> --- .../CSharpRuntimeModelCodeGenerator.cs | 39 +----------- ...nalCSharpRuntimeAnnotationCodeGenerator.cs | 59 ++++++++++++------- .../CSharpRuntimeAnnotationCodeGenerator.cs | 50 +++++++++++++--- .../Basic_cosmos_model/DataEntityType.cs | 1 - .../BigModel/DependentBaseEntityType.cs | 2 - .../BigModel/OwnedType0EntityType.cs | 3 - .../Baselines/BigModel/OwnedTypeEntityType.cs | 2 - .../BigModel/PrincipalBaseEntityType.cs | 1 - ...cipalDerivedDependentBasebyteEntityType.cs | 4 -- .../IndexedDataEntityType.cs | 2 - .../SimpleModel/DependentDerivedEntityType.cs | 1 - .../BigModel/DependentBaseEntityType.cs | 2 - .../BigModel/OwnedType0EntityType.cs | 3 - .../Baselines/BigModel/OwnedTypeEntityType.cs | 2 - .../BigModel/PrincipalBaseEntityType.cs | 1 - ...cipalDerivedDependentBasebyteEntityType.cs | 4 -- .../MyEntityEntityType.cs | 1 - .../Custom_type_mapping/MyEntityEntityType.cs | 1 - .../MyEntityEntityType.cs | 1 - .../IdentityUserEntityType.cs | 1 - .../Fully_qualified_model/IndexEntityType.cs | 1 - .../ScaffoldingEntityType.cs | 1 - .../Baselines/Global_namespace/EntityType1.cs | 1 - .../LazyProxiesEntity3EntityType.cs | 1 - .../LazyProxiesEntity4EntityType.cs | 2 - .../LazyProxiesEntity1EntityType.cs | 1 - .../LazyProxiesEntity2EntityType.cs | 1 - .../LazyConstructorEntityEntityType.cs | 1 - .../LazyPropertyDelegateEntityEntityType.cs | 2 - .../LazyPropertyEntityEntityType.cs | 2 - .../IndexEntityType.cs | 1 - .../DependentBaseEntityType.cs | 1 - .../PrincipalBaseEntityType.cs | 1 - .../SelfReferentialEntityEntityType.cs | 1 - .../SimpleModel/DependentDerivedEntityType.cs | 1 - .../BigModel/DependentBaseEntityType.cs | 2 - .../BigModel/OwnedType0EntityType.cs | 3 - .../Baselines/BigModel/OwnedTypeEntityType.cs | 2 - .../BigModel/PrincipalBaseEntityType.cs | 1 - ...cipalDerivedDependentBasebyteEntityType.cs | 4 -- .../DependentBaseEntityType.cs | 2 - .../OwnedType0EntityType.cs | 3 - .../OwnedTypeEntityType.cs | 2 - .../PrincipalBaseEntityType.cs | 1 - ...cipalDerivedDependentBasebyteEntityType.cs | 4 -- .../CheckConstraints/DataEntityType.cs | 1 - .../Dynamic_schema/DataEntityType.cs | 1 - .../FullTextEntityEntityType.cs | 1 - .../Key_HiLo_sequence/DataEntityType.cs | 1 - .../Baselines/Key_sequence/DataEntityType.cs | 1 - .../SimpleModel/DependentDerivedEntityType.cs | 1 - .../SpatialTypesEntityType.cs | 1 - .../Baselines/Triggers/DataEntityType.cs | 1 - .../VectorIndexEntityEntityType.cs | 1 - .../BigModel/AutoIncrementEntityEntityType.cs | 1 - .../Baselines/BigModel/DataEntityType.cs | 1 - .../BigModel/DependentBaseEntityType.cs | 2 - .../BigModel/OwnedType0EntityType.cs | 3 - .../Baselines/BigModel/OwnedTypeEntityType.cs | 2 - .../BigModel/PrincipalBaseEntityType.cs | 1 - ...cipalDerivedDependentBasebyteEntityType.cs | 4 -- .../AutoIncrementEntityEntityType.cs | 1 - .../DataEntityType.cs | 1 - .../DependentBaseEntityType.cs | 2 - .../OwnedType0EntityType.cs | 3 - .../OwnedTypeEntityType.cs | 2 - .../PrincipalBaseEntityType.cs | 1 - ...cipalDerivedDependentBasebyteEntityType.cs | 4 -- .../CheckConstraints/DataEntityType.cs | 1 - .../Dynamic_schema/DataEntityType.cs | 1 - .../SimpleModel/DependentDerivedEntityType.cs | 1 - .../Baselines/Triggers/DataEntityType.cs | 1 - 72 files changed, 82 insertions(+), 181 deletions(-) diff --git a/src/EFCore.Design/Scaffolding/Internal/CSharpRuntimeModelCodeGenerator.cs b/src/EFCore.Design/Scaffolding/Internal/CSharpRuntimeModelCodeGenerator.cs index c50abf16b7f..d2d8f723f72 100644 --- a/src/EFCore.Design/Scaffolding/Internal/CSharpRuntimeModelCodeGenerator.cs +++ b/src/EFCore.Design/Scaffolding/Internal/CSharpRuntimeModelCodeGenerator.cs @@ -1254,30 +1254,12 @@ private void Create( var keyValueComparer = property.GetKeyValueComparer(); var typeMappingKeyComparer = property.GetTypeMapping().KeyComparer; - var needsDefaultKeyComparer = parameters.ForNativeAot - && (property.IsKey() - || property.IsForeignKey() - || property.IsUniqueIndex()) - && keyValueComparer == typeMappingKeyComparer - && keyValueComparer.IsDefault() - && keyValueComparer.Type == property.ClrType; if ((valueComparer != keyValueComparer && (!parameters.ForNativeAot || keyValueComparer != typeMappingKeyComparer) && (parameters.ForNativeAot || property[CoreAnnotationNames.ValueComparer] != null)) - || needsDefaultKeyComparer) + ) { - if (needsDefaultKeyComparer) - { - SetDefaultValueComparer( - property.ClrType, - favorStructuralComparisons: true, - nameof(CoreTypeMapping.KeyComparer), - propertyParameters); - } - else - { - SetValueComparer(keyValueComparer, typeMappingKeyComparer, nameof(CoreTypeMapping.KeyComparer), propertyParameters); - } + SetValueComparer(keyValueComparer, typeMappingKeyComparer, nameof(CoreTypeMapping.KeyComparer), propertyParameters); } var providerValueComparer = property.GetProviderValueComparer(); @@ -1448,23 +1430,6 @@ private string CreateValueComparerType(Type valueComparerType, Type clrType, CSh return valueComparerString; } - private void SetDefaultValueComparer( - Type clrType, - bool favorStructuralComparisons, - string typeMappingComparerProperty, - CSharpRuntimeAnnotationCodeGeneratorParameters parameters) - { - AddNamespace(typeof(ValueComparer), parameters.Namespaces); - - parameters.MainBuilder - .Append(parameters.TargetName) - .Append(".Set").Append(typeMappingComparerProperty).Append("(ValueComparer.CreateDefault<") - .Append(_code.Reference(clrType)) - .Append(">(favorStructuralComparisons: ") - .Append(_code.Literal(favorStructuralComparisons)) - .AppendLine("));"); - } - private void SetValueComparer( ValueComparer valueComparer, ValueComparer typeMappingComparer, diff --git a/src/EFCore.Relational/Design/Internal/RelationalCSharpRuntimeAnnotationCodeGenerator.cs b/src/EFCore.Relational/Design/Internal/RelationalCSharpRuntimeAnnotationCodeGenerator.cs index 7b888e559ec..9caf24ac49c 100644 --- a/src/EFCore.Relational/Design/Internal/RelationalCSharpRuntimeAnnotationCodeGenerator.cs +++ b/src/EFCore.Relational/Design/Internal/RelationalCSharpRuntimeAnnotationCodeGenerator.cs @@ -2483,8 +2483,42 @@ public override bool Create( return false; } - var defaultInstance = (RelationalTypeMapping?)CreateDefaultTypeMapping(relationalTypeMapping, parameters); - if (defaultInstance == null) + var defaultInstance = (RelationalTypeMapping)CreateDefaultTypeMapping(relationalTypeMapping, parameters); + var comparer = valueComparer ?? relationalTypeMapping.Comparer; + var keyComparer = keyValueComparer ?? relationalTypeMapping.KeyComparer; + var providerComparer = providerValueComparer ?? relationalTypeMapping.ProviderValueComparer; + var storeTypeDifferent = relationalTypeMapping.StoreType != defaultInstance.StoreType; + var sizeDifferent = relationalTypeMapping.Size != null + && relationalTypeMapping.Size != defaultInstance.Size; + var precisionDifferent = relationalTypeMapping.Precision != null + && relationalTypeMapping.Precision != defaultInstance.Precision; + var scaleDifferent = relationalTypeMapping.Scale != null + && relationalTypeMapping.Scale != defaultInstance.Scale; + var dbTypeDifferent = relationalTypeMapping.DbType != null + && relationalTypeMapping.DbType != defaultInstance.DbType; + var isUnicodeDifferent = relationalTypeMapping.IsUnicode != defaultInstance.IsUnicode; + var isFixedLengthDifferent = relationalTypeMapping.IsFixedLength != defaultInstance.IsFixedLength; + var typeDifferent = relationalTypeMapping.Converter == null + && relationalTypeMapping.ClrType != defaultInstance.ClrType; + var storeTypePostfixDifferent = relationalTypeMapping.StoreTypePostfix != defaultInstance.StoreTypePostfix; + if (valueComparer == null + && keyValueComparer == null + && providerValueComparer == null + && comparer == defaultInstance.Comparer + && keyComparer == defaultInstance.KeyComparer + && providerComparer == defaultInstance.ProviderValueComparer + && !storeTypeDifferent + && !sizeDifferent + && !precisionDifferent + && !scaleDifferent + && !dbTypeDifferent + && !isUnicodeDifferent + && !isFixedLengthDifferent + && relationalTypeMapping.Converter == defaultInstance.Converter + && !typeDifferent + && !storeTypePostfixDifferent + && relationalTypeMapping.JsonValueReaderWriter == defaultInstance.JsonValueReaderWriter + && relationalTypeMapping.ElementTypeMapping == defaultInstance.ElementTypeMapping) { return true; } @@ -2495,27 +2529,15 @@ public override bool Create( mainBuilder .Append("comparer: "); - Create(valueComparer ?? relationalTypeMapping.Comparer, parameters, code); + Create(comparer, parameters, code); mainBuilder.AppendLine(",") .Append("keyComparer: "); - Create(keyValueComparer ?? relationalTypeMapping.KeyComparer, parameters, code); + Create(keyComparer, parameters, code); mainBuilder.AppendLine(",") .Append("providerValueComparer: "); - Create(providerValueComparer ?? relationalTypeMapping.ProviderValueComparer, parameters, code); - - var storeTypeDifferent = relationalTypeMapping.StoreType != defaultInstance.StoreType; - var sizeDifferent = relationalTypeMapping.Size != null - && relationalTypeMapping.Size != defaultInstance.Size; - var precisionDifferent = relationalTypeMapping.Precision != null - && relationalTypeMapping.Precision != defaultInstance.Precision; - var scaleDifferent = relationalTypeMapping.Scale != null - && relationalTypeMapping.Scale != defaultInstance.Scale; - var dbTypeDifferent = relationalTypeMapping.DbType != null - && relationalTypeMapping.DbType != defaultInstance.DbType; - var isUnicodeDifferent = relationalTypeMapping.IsUnicode != defaultInstance.IsUnicode; - var isFixedLengthDifferent = relationalTypeMapping.IsFixedLength != defaultInstance.IsFixedLength; + Create(providerComparer, parameters, code); if (storeTypeDifferent || sizeDifferent || precisionDifferent @@ -2586,15 +2608,12 @@ public override bool Create( 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) { mainBuilder.AppendLine(",") diff --git a/src/EFCore/Design/Internal/CSharpRuntimeAnnotationCodeGenerator.cs b/src/EFCore/Design/Internal/CSharpRuntimeAnnotationCodeGenerator.cs index 65daf72ad25..8172bb96bed 100644 --- a/src/EFCore/Design/Internal/CSharpRuntimeAnnotationCodeGenerator.cs +++ b/src/EFCore/Design/Internal/CSharpRuntimeAnnotationCodeGenerator.cs @@ -586,6 +586,27 @@ public static void CreateJsonValueReaderWriter( } } + /// + public virtual bool Create( + CoreTypeMapping typeMapping, + IProperty property, + CSharpRuntimeAnnotationCodeGeneratorParameters parameters) + { + var keyValueComparer = property.GetKeyValueComparer(); + var typeMappingKeyComparer = property.GetTypeMapping().KeyComparer; + keyValueComparer = parameters.ForNativeAot + && (property.IsKey() + || property.IsForeignKey() + || property.IsUniqueIndex()) + && keyValueComparer == typeMappingKeyComparer + && keyValueComparer.IsDefault() + && keyValueComparer.Type == property.ClrType + ? keyValueComparer + : null; + + return Create(typeMapping, parameters, keyValueComparer: keyValueComparer); + } + /// public virtual bool Create( CoreTypeMapping typeMapping, @@ -597,7 +618,21 @@ public virtual bool Create( var mainBuilder = parameters.MainBuilder; var code = Dependencies.CSharpHelper; var defaultInstance = CreateDefaultTypeMapping(typeMapping, parameters); - if (defaultInstance == null) + var comparer = valueComparer ?? typeMapping.Comparer; + var keyComparer = keyValueComparer ?? typeMapping.KeyComparer; + var providerComparer = providerValueComparer ?? typeMapping.ProviderValueComparer; + var typeDifferent = typeMapping.Converter == null + && typeMapping.ClrType != defaultInstance.ClrType; + if (valueComparer == null + && keyValueComparer == null + && providerValueComparer == null + && comparer == defaultInstance.Comparer + && keyComparer == defaultInstance.KeyComparer + && providerComparer == defaultInstance.ProviderValueComparer + && typeMapping.Converter == defaultInstance.Converter + && !typeDifferent + && typeMapping.JsonValueReaderWriter == defaultInstance.JsonValueReaderWriter + && typeMapping.ElementTypeMapping == defaultInstance.ElementTypeMapping) { return true; } @@ -608,15 +643,15 @@ public virtual bool Create( mainBuilder .Append("comparer: "); - Create(valueComparer ?? typeMapping.Comparer, parameters, code); + Create(comparer, parameters, code); mainBuilder.AppendLine(",") .Append("keyComparer: "); - Create(keyValueComparer ?? typeMapping.KeyComparer, parameters, code); + Create(keyComparer, parameters, code); mainBuilder.AppendLine(",") .Append("providerValueComparer: "); - Create(providerValueComparer ?? typeMapping.ProviderValueComparer, parameters, code); + Create(providerComparer, parameters, code); if (typeMapping.Converter != null && typeMapping.Converter != defaultInstance.Converter) @@ -627,8 +662,6 @@ public virtual bool Create( Create(typeMapping.Converter, parameters, code); } - var typeDifferent = typeMapping.Converter == null - && typeMapping.ClrType != defaultInstance.ClrType; if (typeDifferent) { mainBuilder.AppendLine(",") @@ -666,7 +699,7 @@ public virtual bool Create( /// 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 virtual CoreTypeMapping? CreateDefaultTypeMapping( + protected virtual CoreTypeMapping CreateDefaultTypeMapping( CoreTypeMapping typeMapping, CSharpRuntimeAnnotationCodeGeneratorParameters parameters) { @@ -689,7 +722,6 @@ public virtual bool Create( .Append(code.Reference(typeMappingType)) .Append(".Default"); - var defaultInstance = (CoreTypeMapping)defaultProperty.GetValue(null)!; - return typeMapping == defaultInstance ? null : defaultInstance; + return (CoreTypeMapping)defaultProperty.GetValue(null)!; } } 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 37b6b10c81a..94d29b3d3c9 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 @@ -67,7 +67,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var partitionId = runtimeEntityType.AddProperty( "PartitionId", diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs index 908d2b24253..f4679a38a7e 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs @@ -70,7 +70,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); - principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalAlternateId = runtimeEntityType.AddProperty( "PrincipalAlternateId", @@ -109,7 +108,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); - principalAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalAlternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var enumDiscriminator = runtimeEntityType.AddProperty( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index e4def4f3b2c..4fe5b38523f 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -68,7 +68,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); - principalDerivedId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalDerivedAlternateId = runtimeEntityType.AddProperty( "PrincipalDerivedAlternateId", @@ -107,7 +106,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); - principalDerivedAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalDerivedAlternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var id = runtimeEntityType.AddProperty( @@ -144,7 +142,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index 32f5489a25a..ba87978f771 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -70,7 +70,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); - principalBaseId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalBaseAlternateId = runtimeEntityType.AddProperty( "PrincipalBaseAlternateId", @@ -110,7 +109,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); - principalBaseAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalBaseAlternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var details = runtimeEntityType.AddProperty( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index 323a98f2518..06643bad1a0 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -142,7 +142,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas Guid (string v) => new Guid(v)), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); - alternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); alternateId.SetSentinelFromProviderValue("00000000-0000-0000-0000-000000000000"); var type = runtimeEntityType.AddProperty( diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index c8b08635ab0..d9d7d3e8a99 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -111,7 +111,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); - derivedsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var derivedsAlternateId = runtimeEntityType.AddProperty( "DerivedsAlternateId", @@ -190,7 +189,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); - derivedsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsId = runtimeEntityType.AddProperty( "PrincipalsId", @@ -263,7 +261,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); - principalsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsAlternateId = runtimeEntityType.AddProperty( "PrincipalsAlternateId", @@ -342,7 +339,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (Guid v) => v.ToString("D"), Guid (string v) => new Guid(v)))); principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); - principalsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var type = runtimeEntityType.AddProperty( "$type", 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 4ec86d47821..20b27fe660b 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 @@ -87,7 +87,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var partitionId = runtimeEntityType.AddProperty( "PartitionId", @@ -137,7 +136,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(string), jsonValueReaderWriter: JsonStringReaderWriter.Instance); partitionId.SetCurrentValueComparer(new EntryCurrentValueComparer(partitionId)); - partitionId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var type = runtimeEntityType.AddProperty( "$type", diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs index f32940579fe..84ccae895e1 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs @@ -82,7 +82,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var type = runtimeEntityType.AddProperty( "$type", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs index 7f11f4afbfe..41b05d2f3a1 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs @@ -67,7 +67,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); - principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalAlternateId = runtimeEntityType.AddProperty( "PrincipalAlternateId", @@ -101,7 +100,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); - principalAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var enumDiscriminator = runtimeEntityType.AddProperty( "EnumDiscriminator", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index 04956b5ed26..be1f12f022a 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -66,7 +66,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); - principalDerivedId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalDerivedAlternateId = runtimeEntityType.AddProperty( "PrincipalDerivedAlternateId", @@ -100,7 +99,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); - principalDerivedAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var id = runtimeEntityType.AddProperty( "Id", @@ -135,7 +133,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index d355b95cf95..0b8d7239051 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -68,7 +68,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); - principalBaseId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalBaseAlternateId = runtimeEntityType.AddProperty( "PrincipalBaseAlternateId", @@ -103,7 +102,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); - principalBaseAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index 5c4c6bc39a6..f150d6b05a4 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -138,7 +138,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); - alternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var discriminator = runtimeEntityType.AddProperty( "Discriminator", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index fcf936c2acf..51876ed82f8 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -105,7 +105,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); - derivedsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var derivedsAlternateId = runtimeEntityType.AddProperty( "DerivedsAlternateId", @@ -178,7 +177,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); - derivedsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsId = runtimeEntityType.AddProperty( "PrincipalsId", @@ -251,7 +249,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); - principalsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsAlternateId = runtimeEntityType.AddProperty( "PrincipalsAlternateId", @@ -324,7 +321,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); - principalsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var rowid = runtimeEntityType.AddProperty( "rowid", 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 92ee650f318..aa01de98b60 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 @@ -103,7 +103,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.SetProviderValueComparer(new ValueComparer( bool (int l, int r) => false, int (int v) => 0, 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 58ee9c50b79..8adb9fa963c 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 @@ -102,7 +102,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { id }); 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 a3762f5f589..bcfa3e50cad 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 @@ -110,7 +110,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (int i) => JsonSerializer.Serialize(i, (JsonSerializerOptions)(null)), int (string i) => JsonSerializer.Deserialize(i, (JsonSerializerOptions)(null))))); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { id }); 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 d4fe8afdf91..64720f9135d 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 @@ -80,7 +80,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(string), jsonValueReaderWriter: JsonStringReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var accessFailedCount = runtimeEntityType.AddProperty( "AccessFailedCount", 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 ca8c24fa08d..048a82be6fb 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 @@ -78,7 +78,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { 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 6a8eb95ff0c..c523541931e 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 @@ -78,7 +78,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { 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 7100a0ca22e..cb3c09a790e 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Global_namespace/EntityType1.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/Global_namespace/EntityType1.cs @@ -100,7 +100,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { 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 8ba905590f1..53ff2c367b7 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 @@ -79,7 +79,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var name = runtimeEntityType.AddProperty( "Name", 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 bbfd103530b..24bb9d86dc2 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 @@ -81,7 +81,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var content = runtimeEntityType.AddProperty( "Content", @@ -162,7 +161,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); referenceNavigationId.SetCurrentValueComparer(new EntryCurrentValueComparer(referenceNavigationId)); - referenceNavigationId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var title = runtimeEntityType.AddProperty( "Title", 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 f3f87c402ea..5539f9bcf9b 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 @@ -83,7 +83,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var referenceNavigationId = runtimeEntityType.AddProperty( "ReferenceNavigationId", 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 7921ce022e3..b00e9852b5a 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 @@ -80,7 +80,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var loader = runtimeEntityType.AddServiceProperty( "Loader", 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 64c9bac34ba..65e488282c1 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 @@ -80,7 +80,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var _loader = runtimeEntityType.AddServiceProperty( "_loader", 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 50503399973..254fdb05e6d 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 @@ -82,7 +82,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var lazyConstructorEntityId = runtimeEntityType.AddProperty( "LazyConstructorEntityId", @@ -132,7 +131,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); lazyConstructorEntityId.SetCurrentValueComparer(new EntryCurrentValueComparer(lazyConstructorEntityId)); - lazyConstructorEntityId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var lazyLoader = runtimeEntityType.AddServiceProperty( "LazyLoader", 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 6fdea89ba45..bffdfee1277 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 @@ -82,7 +82,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var lazyConstructorEntityId = runtimeEntityType.AddProperty( "LazyConstructorEntityId", @@ -132,7 +131,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); lazyConstructorEntityId.SetCurrentValueComparer(new EntryCurrentValueComparer(lazyConstructorEntityId)); - lazyConstructorEntityId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var loader = runtimeEntityType.AddServiceProperty( "Loader", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/IndexEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/IndexEntityType.cs index db5a24dc773..b04289b7f44 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/IndexEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/NativeAOT_default_key_comparer_is_emitted/IndexEntityType.cs @@ -78,7 +78,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(Guid), jsonValueReaderWriter: JsonGuidReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { id }); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/DependentBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/DependentBaseEntityType.cs index 2b4c34d7448..a7673970c85 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/DependentBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/DependentBaseEntityType.cs @@ -115,7 +115,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); - principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var key = runtimeEntityType.AddKey( new[] { id }); diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/PrincipalBaseEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/PrincipalBaseEntityType.cs index 5fd53da562a..1343549ec58 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/PrincipalBaseEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/RelationshipCycles/PrincipalBaseEntityType.cs @@ -298,7 +298,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); - principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var refTypeArray = runtimeEntityType.AddProperty( "RefTypeArray", 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 00b50870ebd..66a7f2e5bfe 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 @@ -79,7 +79,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(long), jsonValueReaderWriter: JsonInt64ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var collection = runtimeEntityType.AddProperty( "Collection", diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs index 489cb4bd918..6c39098e2b7 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs @@ -77,7 +77,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var data = runtimeEntityType.AddProperty( "Data", diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs index 3cc5510bbbc..ae8aab36198 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs @@ -68,7 +68,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); - principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalAlternateId = runtimeEntityType.AddProperty( @@ -103,7 +102,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); - principalAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var enumDiscriminator = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index 67cfb3358a0..85912024390 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -65,7 +65,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); - principalDerivedId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalDerivedId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalDerivedAlternateId = runtimeEntityType.AddProperty( @@ -100,7 +99,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); - principalDerivedAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalDerivedAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var id = runtimeEntityType.AddProperty( @@ -134,7 +132,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var details = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index 9d43d1df8a4..72f3c000844 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -68,7 +68,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); - principalBaseId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var overrides = new StoreObjectDictionary(); var principalBaseIdPrincipalBase = new RuntimeRelationalPropertyOverrides( @@ -115,7 +114,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); - principalBaseAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalBaseAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var details = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index c5bc91910bf..503437810e6 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -148,7 +148,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); - alternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); alternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var enum1 = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index 3fbd7dc6c2c..b6b4f83beea 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -104,7 +104,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); - derivedsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); derivedsId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var derivedsAlternateId = runtimeEntityType.AddProperty( @@ -178,7 +177,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); - derivedsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); derivedsAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalsId = runtimeEntityType.AddProperty( @@ -250,7 +248,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); - principalsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalsId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalsAlternateId = runtimeEntityType.AddProperty( @@ -324,7 +321,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); - principalsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalsAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var rowid = runtimeEntityType.AddProperty( 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 3cc5510bbbc..ae8aab36198 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 @@ -68,7 +68,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); - principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalAlternateId = runtimeEntityType.AddProperty( @@ -103,7 +102,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); - principalAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var enumDiscriminator = runtimeEntityType.AddProperty( 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 ca83ce0d423..8edcc31edc9 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 @@ -65,7 +65,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); - principalDerivedId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalDerivedId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalDerivedAlternateId = runtimeEntityType.AddProperty( @@ -100,7 +99,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); - principalDerivedAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalDerivedAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var __synthesizedOrdinal = runtimeEntityType.AddProperty( @@ -135,7 +133,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); __synthesizedOrdinal.SetCurrentValueComparer(new EntryCurrentValueComparer(__synthesizedOrdinal)); - __synthesizedOrdinal.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); __synthesizedOrdinal.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var details = runtimeEntityType.AddProperty( 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 5472d66d525..d6b88b66023 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 @@ -67,7 +67,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); - principalBaseId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalBaseId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalBaseAlternateId = runtimeEntityType.AddProperty( @@ -103,7 +102,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); - principalBaseAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalBaseAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var details = runtimeEntityType.AddProperty( 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 ad6dae70250..310e6a7fad7 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 @@ -139,7 +139,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); - alternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); alternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var discriminator = runtimeEntityType.AddProperty( 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 3fbd7dc6c2c..b6b4f83beea 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 @@ -104,7 +104,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); - derivedsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); derivedsId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var derivedsAlternateId = runtimeEntityType.AddProperty( @@ -178,7 +177,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); - derivedsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); derivedsAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalsId = runtimeEntityType.AddProperty( @@ -250,7 +248,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (long v) => ((object)v).GetHashCode(), long (long v) => v)); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); - principalsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalsId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var principalsAlternateId = runtimeEntityType.AddProperty( @@ -324,7 +321,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "uniqueidentifier")); principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); - principalsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); principalsAlternateId.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var rowid = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs index 55e3b0d2afc..b1913db5baa 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs @@ -61,7 +61,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var blob = runtimeEntityType.AddProperty( 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 55e3b0d2afc..b1913db5baa 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs @@ -61,7 +61,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var blob = runtimeEntityType.AddProperty( 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 dfac7c8e2cf..43558c61d19 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 @@ -77,7 +77,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var title = runtimeEntityType.AddProperty( 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 17ba3029990..90b722f2538 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 @@ -61,7 +61,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:HiLoSequenceName", "HL"); id.AddAnnotation("SqlServer:HiLoSequenceSchema", "S"); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.SequenceHiLo); 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 dede8a50309..5a798585278 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Key_sequence/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Key_sequence/DataEntityType.cs @@ -61,7 +61,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("Relational:DefaultValueSql", "NEXT VALUE FOR [KeySeqSchema].[KeySeq]"); id.AddAnnotation("SqlServer:SequenceName", "KeySeq"); id.AddAnnotation("SqlServer:SequenceSchema", "KeySeqSchema"); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs index a4d058d5b31..7059bafc9f0 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs @@ -75,7 +75,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var data = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SpatialTypesTest/SpatialTypesEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SpatialTypesTest/SpatialTypesEntityType.cs index f3e0b4394a5..9498128f9a8 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SpatialTypesTest/SpatialTypesEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/SpatialTypesTest/SpatialTypesEntityType.cs @@ -77,7 +77,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var point = runtimeEntityType.AddProperty( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs index 016bd814801..2d767899d9b 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs @@ -62,7 +62,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var blob = runtimeEntityType.AddProperty( 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 3d7bc1d6bec..8f0019e03a7 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Vector_index/VectorIndexEntityEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/Vector_index/VectorIndexEntityEntityType.cs @@ -78,7 +78,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v, int (int v) => v)); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); id.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); var vector = runtimeEntityType.AddProperty( diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/AutoIncrementEntityEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/AutoIncrementEntityEntityType.cs index f73fc386287..de8114f2299 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/AutoIncrementEntityEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/AutoIncrementEntityEntityType.cs @@ -78,7 +78,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var name = runtimeEntityType.AddProperty( "Name", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DataEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DataEntityType.cs index 4bf3b905c9a..7908e4ddeb7 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DataEntityType.cs @@ -64,7 +64,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var blob = runtimeEntityType.AddProperty( "Blob", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs index 59c0471b3cb..cbd35f37e96 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentBaseEntityType.cs @@ -70,7 +70,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); - principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalAlternateId = runtimeEntityType.AddProperty( "PrincipalAlternateId", @@ -90,7 +89,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); principalAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); - principalAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var enumDiscriminator = runtimeEntityType.AddProperty( "EnumDiscriminator", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index de95c9fba8e..9c652fea578 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -68,7 +68,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); - principalDerivedId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalDerivedAlternateId = runtimeEntityType.AddProperty( "PrincipalDerivedAlternateId", @@ -88,7 +87,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); principalDerivedAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); - principalDerivedAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var id = runtimeEntityType.AddProperty( "Id", @@ -123,7 +121,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index ab85b85236a..518bd1e9f86 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -70,7 +70,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); - principalBaseId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var overrides = new StoreObjectDictionary(); var principalBaseIdPrincipalBase = new RuntimeRelationalPropertyOverrides( @@ -101,7 +100,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); principalBaseAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); - principalBaseAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index ff8f85ed4bd..ef000e05e30 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -136,7 +136,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); alternateId.TypeMapping = SqliteGuidTypeMapping.Default; alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); - alternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var enum1 = runtimeEntityType.AddProperty( "Enum1", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index 24864723ef5..fae0247115a 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -106,7 +106,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); - derivedsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var derivedsAlternateId = runtimeEntityType.AddProperty( "DerivedsAlternateId", @@ -165,7 +164,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); derivedsAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); - derivedsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsId = runtimeEntityType.AddProperty( "PrincipalsId", @@ -238,7 +236,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); - principalsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsAlternateId = runtimeEntityType.AddProperty( "PrincipalsAlternateId", @@ -297,7 +294,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 3); principalsAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); - principalsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var rowid = runtimeEntityType.AddProperty( "rowid", 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 f73fc386287..de8114f2299 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 @@ -78,7 +78,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var name = runtimeEntityType.AddProperty( "Name", 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 4bf3b905c9a..7908e4ddeb7 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 @@ -64,7 +64,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var blob = runtimeEntityType.AddProperty( "Blob", 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 59c0471b3cb..cbd35f37e96 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 @@ -70,7 +70,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalId)); - principalId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalAlternateId = runtimeEntityType.AddProperty( "PrincipalAlternateId", @@ -90,7 +89,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); principalAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalAlternateId)); - principalAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var enumDiscriminator = runtimeEntityType.AddProperty( "EnumDiscriminator", 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 68443e5d465..8da8aab2594 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 @@ -68,7 +68,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalDerivedId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedId)); - principalDerivedId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalDerivedAlternateId = runtimeEntityType.AddProperty( "PrincipalDerivedAlternateId", @@ -88,7 +87,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); principalDerivedAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalDerivedAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalDerivedAlternateId)); - principalDerivedAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var __synthesizedOrdinal = runtimeEntityType.AddProperty( "__synthesizedOrdinal", @@ -124,7 +122,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); __synthesizedOrdinal.SetCurrentValueComparer(new EntryCurrentValueComparer(__synthesizedOrdinal)); - __synthesizedOrdinal.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", 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 199f5d10e4d..3ef1ee07e73 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 @@ -70,7 +70,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalBaseId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseId)); - principalBaseId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalBaseAlternateId = runtimeEntityType.AddProperty( "PrincipalBaseAlternateId", @@ -91,7 +90,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); principalBaseAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalBaseAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalBaseAlternateId)); - principalBaseAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var details = runtimeEntityType.AddProperty( "Details", 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 09e4d29dee6..0b1d43bb873 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 @@ -128,7 +128,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: -1); alternateId.TypeMapping = SqliteGuidTypeMapping.Default; alternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(alternateId)); - alternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var discriminator = runtimeEntityType.AddProperty( "Discriminator", 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 24864723ef5..fae0247115a 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 @@ -106,7 +106,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); derivedsId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsId)); - derivedsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var derivedsAlternateId = runtimeEntityType.AddProperty( "DerivedsAlternateId", @@ -165,7 +164,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 1); derivedsAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; derivedsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(derivedsAlternateId)); - derivedsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsId = runtimeEntityType.AddProperty( "PrincipalsId", @@ -238,7 +236,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); principalsId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsId)); - principalsId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var principalsAlternateId = runtimeEntityType.AddProperty( "PrincipalsAlternateId", @@ -297,7 +294,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeGenerationIndex: 3); principalsAlternateId.TypeMapping = SqliteGuidTypeMapping.Default; principalsAlternateId.SetCurrentValueComparer(new EntryCurrentValueComparer(principalsAlternateId)); - principalsAlternateId.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var rowid = runtimeEntityType.AddProperty( "rowid", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs index 70a55b6b355..00eea3177f6 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/CheckConstraints/DataEntityType.cs @@ -63,7 +63,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var blob = runtimeEntityType.AddProperty( "Blob", 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 70a55b6b355..00eea3177f6 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Dynamic_schema/DataEntityType.cs @@ -63,7 +63,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var blob = runtimeEntityType.AddProperty( "Blob", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs index a88936d3b18..02044f269a5 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/SimpleModel/DependentDerivedEntityType.cs @@ -77,7 +77,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var data = runtimeEntityType.AddProperty( "Data", diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs index ddf49d2be5d..5c7a835f87c 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/Triggers/DataEntityType.cs @@ -64,7 +64,6 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER")); id.SetCurrentValueComparer(new EntryCurrentValueComparer(id)); - id.SetKeyComparer(ValueComparer.CreateDefault(favorStructuralComparisons: true)); var blob = runtimeEntityType.AddProperty( "Blob",