diff --git a/src/EFCore/Metadata/Internal/InternalForeignKeyBuilder.cs b/src/EFCore/Metadata/Internal/InternalForeignKeyBuilder.cs index f8c24aeeca6..e8c3c286925 100644 --- a/src/EFCore/Metadata/Internal/InternalForeignKeyBuilder.cs +++ b/src/EFCore/Metadata/Internal/InternalForeignKeyBuilder.cs @@ -353,7 +353,7 @@ private InternalForeignKeyBuilder HasNavigations( if (inverse?.Builder != null && inverse.GetConfigurationSource() != ConfigurationSource.Explicit) { - inverse.DeclaringEntityType.Builder.HasNoSkipNavigation(conflictingSkipNavigation, configurationSource); + inverse.DeclaringEntityType.Builder.HasNoSkipNavigation(inverse, configurationSource); } conflictingSkipNavigation.DeclaringEntityType.Builder.HasNoSkipNavigation( diff --git a/test/EFCore.Tests/Metadata/Internal/InternalSkipNavigationBuilderTest.cs b/test/EFCore.Tests/Metadata/Internal/InternalSkipNavigationBuilderTest.cs index f3c8c98eb2e..2466268b305 100644 --- a/test/EFCore.Tests/Metadata/Internal/InternalSkipNavigationBuilderTest.cs +++ b/test/EFCore.Tests/Metadata/Internal/InternalSkipNavigationBuilderTest.cs @@ -12,6 +12,24 @@ namespace Microsoft.EntityFrameworkCore.Metadata.Internal { public class InternalSkipNavigationBuilderTest { + [ConditionalFact] + public void Can_only_override_lower_or_equal_source_SkipNavigation() + { + var builder = CreateInternalSkipNavigationBuilder(); + IConventionSkipNavigation skipNavigation = builder.Metadata; + + ((SkipNavigation)skipNavigation).SetConfigurationSource(ConfigurationSource.DataAnnotation); + + var productEntity = skipNavigation.TargetEntityType.Builder; + Assert.Null(productEntity.HasRelationship(skipNavigation.DeclaringEntityType, null, nameof(Order.Products))); + + Assert.NotNull(productEntity.HasRelationship( + skipNavigation.DeclaringEntityType, null, nameof(Order.Products), fromDataAnnotation: true)); + + Assert.Null(skipNavigation.Builder); + Assert.Empty(skipNavigation.DeclaringEntityType.GetSkipNavigations()); + } + [ConditionalFact] public void Can_only_override_lower_or_equal_source_HasField() {