Skip to content

Commit

Permalink
Configure ambiguous navigations with RequiredAttribute
Browse files Browse the repository at this point in the history
Fixes #24215
  • Loading branch information
AndriySvyryd authored Aug 27, 2021
1 parent a6ad9e5 commit d6e2628
Show file tree
Hide file tree
Showing 5 changed files with 236 additions and 164 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Microsoft.EntityFrameworkCore.Diagnostics;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore.Metadata.Conventions.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata.Internal;

namespace Microsoft.EntityFrameworkCore.Metadata.Conventions
{
Expand Down Expand Up @@ -68,16 +69,13 @@ private void ProcessNavigation(IConventionNavigationBuilder navigationBuilder)
return;
}

if (foreignKey.GetPrincipalEndConfigurationSource() != null)
if (navigation.IsOnDependent)
{
if (navigation.IsOnDependent)
{
foreignKey.Builder.IsRequired(true, fromDataAnnotation: true);
}
else
{
foreignKey.Builder.IsRequiredDependent(true, fromDataAnnotation: true);
}
foreignKey.Builder.IsRequired(true, fromDataAnnotation: true);
}
else
{
foreignKey.Builder.IsRequiredDependent(true, fromDataAnnotation: true);
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/EFCore/Metadata/Internal/ForeignKey.cs
Original file line number Diff line number Diff line change
Expand Up @@ -664,7 +664,7 @@ public virtual bool IsRequired

_isRequiredConfigurationSource = required == null
? null
: (ConfigurationSource?)configurationSource.Max(_isRequiredConfigurationSource);
: configurationSource.Max(_isRequiredConfigurationSource);

return IsRequired != oldRequired
? DeclaringEntityType.Model.ConventionDispatcher.OnForeignKeyRequirednessChanged(Builder)
Expand Down Expand Up @@ -727,7 +727,7 @@ public virtual bool IsRequiredDependent

_isRequiredDependentConfigurationSource = required == null
? null
: (ConfigurationSource?)configurationSource.Max(_isRequiredConfigurationSource);
: configurationSource.Max(_isRequiredConfigurationSource);

return IsRequiredDependent != oldRequired
? DeclaringEntityType.Model.ConventionDispatcher.OnForeignKeyDependentRequirednessChanged(Builder)
Expand Down
Loading

0 comments on commit d6e2628

Please sign in to comment.