/// <summary> /// 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. /// </summary> public virtual InternalNavigationBuilder IsRequired(bool?required, ConfigurationSource configurationSource) { if (configurationSource == ConfigurationSource.Explicit || CanSetIsRequired(required, configurationSource)) { var foreignKey = Metadata.ForeignKey; if (foreignKey.IsUnique) { if (foreignKey.GetPrincipalEndConfigurationSource() == null) { throw new InvalidOperationException( CoreStrings.AmbiguousEndRequiredDependentNavigation( Metadata.DeclaringEntityType.DisplayName(), Metadata.Name, foreignKey.Properties.Format())); } return(Metadata.IsOnDependent ? foreignKey.Builder.IsRequired(required, configurationSource) .Metadata.DependentToPrincipal.Builder : foreignKey.Builder.IsRequiredDependent(required, configurationSource) .Metadata.PrincipalToDependent.Builder); } else { if (Metadata.IsOnDependent) { return(foreignKey.Builder.IsRequired(required, configurationSource) .Metadata.DependentToPrincipal.Builder); } else { throw new InvalidOperationException( CoreStrings.NonUniqueRequiredDependentNavigation( foreignKey.PrincipalEntityType.DisplayName(), Metadata.Name)); } } } return(null); }