public override void ProcessNavigationAdded( IConventionNavigationBuilder navigationBuilder, BackingFieldAttribute attribute, IConventionContext <IConventionNavigationBuilder> context) { navigationBuilder.HasField(attribute.Name, fromDataAnnotation: true); }
/// <inheritdoc /> public virtual void ProcessNavigationAdded( IConventionNavigationBuilder navigationBuilder, IConventionContext <IConventionNavigationBuilder> context) { ProcessNavigation(navigationBuilder); context.StopProcessingIfChanged(navigationBuilder.Metadata.Builder); }
public override IConventionNavigationBuilder?OnNavigationAdded(IConventionNavigationBuilder navigationBuilder) { if (!navigationBuilder.Metadata.IsInModel) { return(null); } using (_dispatcher.DelayConventions()) { _navigationConventionBuilderContext.ResetState(navigationBuilder); foreach (var navigationConvention in _conventionSet.NavigationAddedConventions) { navigationConvention.ProcessNavigationAdded(navigationBuilder, _navigationConventionBuilderContext); if (_navigationConventionBuilderContext.ShouldStopProcessing()) { return(_navigationConventionBuilderContext.Result); } } } if (!navigationBuilder.Metadata.IsInModel) { return(null); } return(navigationBuilder); }
/// <inheritdoc /> public override void ProcessNavigationAdded( IConventionNavigationBuilder navigationBuilder, InversePropertyAttribute attribute, IConventionContext <IConventionNavigationBuilder> context) { var navigation = navigationBuilder.Metadata; var foreignKey = navigation.ForeignKey; if (foreignKey.DeclaringEntityType.IsOwned() || foreignKey.PrincipalEntityType.IsOwned()) { return; } var newRelationshipBuilder = ConfigureInverseNavigation( navigation.DeclaringEntityType.Builder, navigation.GetIdentifyingMemberInfo() !, navigation.TargetEntityType.Builder, attribute); if (newRelationshipBuilder == null) { context.StopProcessing(); return; } var newNavigation = navigation.IsOnDependent ? newRelationshipBuilder.Metadata.DependentToPrincipal : newRelationshipBuilder.Metadata.PrincipalToDependent; context.StopProcessingIfChanged(newNavigation?.Builder); }
/// <inheritdoc /> public override void ProcessNavigationAdded( IConventionNavigationBuilder navigationBuilder, RequiredAttribute attribute, IConventionContext <IConventionNavigationBuilder> context) { ProcessNavigation(navigationBuilder); context.StopProcessingIfChanged(navigationBuilder.Metadata.Builder); }
/// <inheritdoc /> public virtual void ProcessNavigationAdded( IConventionNavigationBuilder navigationBuilder, IConventionContext <IConventionNavigationBuilder> context) { var navigation = navigationBuilder.Metadata; var newRelationshipBuilder = DiscoverProperties(navigation.ForeignKey.Builder, context); context.StopProcessingIfChanged(newRelationshipBuilder?.Metadata.GetNavigation(navigation.IsOnDependent)?.Builder); }
/// <inheritdoc/> public override void ProcessNavigationAdded( IConventionNavigationBuilder navigationBuilder, RequiredAttribute attribute, IConventionContext <IConventionNavigationBuilder> context) { var navigation = navigationBuilder.Metadata; var foreignKey = navigation.ForeignKey; if (navigation.IsCollection) { Dependencies.Logger.RequiredAttributeOnCollection(navigation); return; } var relationshipBuilder = foreignKey.Builder; if (!navigation.IsOnDependent) { var inverse = navigation.Inverse; if (inverse != null) { var attributes = GetAttributes <RequiredAttribute>(inverse.DeclaringEntityType, inverse); if (attributes.Any()) { Dependencies.Logger.RequiredAttributeOnBothNavigations(navigation, inverse); return; } } if (foreignKey.GetPrincipalEndConfigurationSource() != null) { Dependencies.Logger.RequiredAttributeOnDependent(foreignKey.PrincipalToDependent); return; } relationshipBuilder = relationshipBuilder.HasEntityTypes( foreignKey.DeclaringEntityType, foreignKey.PrincipalEntityType); if (relationshipBuilder == null) { return; } Dependencies.Logger.RequiredAttributeInverted(relationshipBuilder.Metadata.DependentToPrincipal); } relationshipBuilder = relationshipBuilder.IsRequired(true, fromDataAnnotation: true); if (relationshipBuilder == null) { return; } context.StopProcessingIfChanged(relationshipBuilder.Metadata.DependentToPrincipal?.Builder); }
/// <inheritdoc /> public virtual void ProcessNavigationAdded( IConventionNavigationBuilder navigationBuilder, IConventionContext <IConventionNavigationBuilder> context) { var navigation = navigationBuilder.Metadata; var foreignKey = navigation.ForeignKey; var relationshipBuilder = foreignKey.Builder; var modelBuilder = navigationBuilder.ModelBuilder; if (!IsNonNullable(modelBuilder, navigation) || navigation.IsCollection) { return; } if (!navigation.IsOnDependent) { var inverse = navigation.Inverse; if (inverse != null) { if (IsNonNullable(modelBuilder, inverse)) { Dependencies.Logger.NonNullableReferenceOnBothNavigations(navigation, inverse); return; } } if (!navigation.ForeignKey.IsUnique || foreignKey.GetPrincipalEndConfigurationSource() != null) { Dependencies.Logger.NonNullableReferenceOnDependent(navigation.ForeignKey.PrincipalToDependent); return; } relationshipBuilder = relationshipBuilder.HasEntityTypes( foreignKey.DeclaringEntityType, foreignKey.PrincipalEntityType); if (relationshipBuilder == null) { return; } Dependencies.Logger.NonNullableInverted(relationshipBuilder.Metadata.DependentToPrincipal); } relationshipBuilder = relationshipBuilder.IsRequired(true); if (relationshipBuilder != null) { context.StopProcessingIfChanged(relationshipBuilder.Metadata.DependentToPrincipal?.Builder); } }
/// <inheritdoc/> public virtual void ProcessNavigationAdded( IConventionNavigationBuilder navigationBuilder, IConventionContext <IConventionNavigationBuilder> context) { var navigation = navigationBuilder.Metadata; var field = GetFieldToSet(navigation); if (field != null) { navigation.Builder.HasField(field); } }
/// <inheritdoc /> public virtual void ProcessNavigationAdded( IConventionNavigationBuilder navigationBuilder, IConventionContext<IConventionNavigationBuilder> context) { var navigation = navigationBuilder.Metadata; var attributes = GetAttributes<TAttribute>(navigation.DeclaringEntityType, navigation); foreach (var attribute in attributes) { ProcessNavigationAdded(navigationBuilder, attribute, context); if (((IReadableConventionContext)context).ShouldStopProcessing()) { break; } } }
/// <summary> /// Called after a navigation is added to the entity type. /// </summary> /// <param name="navigationBuilder">The builder for the navigation.</param> /// <param name="context">Additional information associated with convention execution.</param> public virtual void ProcessNavigationAdded( IConventionNavigationBuilder navigationBuilder, IConventionContext <IConventionNavigationBuilder> context) { Check.NotNull(navigationBuilder, nameof(navigationBuilder)); var onDependent = navigationBuilder.Metadata.IsOnDependent; var newRelationshipBuilder = UpdateRelationshipBuilder(navigationBuilder.Metadata.ForeignKey.Builder, context); if (newRelationshipBuilder != null) { var newNavigationBuilder = onDependent ? newRelationshipBuilder.Metadata.DependentToPrincipal !.Builder : newRelationshipBuilder.Metadata.PrincipalToDependent !.Builder; context.StopProcessingIfChanged(newNavigationBuilder); } }
private void ProcessNavigation(IConventionNavigationBuilder navigationBuilder) { var navigation = navigationBuilder.Metadata; var foreignKey = navigation.ForeignKey; if (navigation.IsCollection) { Dependencies.Logger.RequiredAttributeOnCollection(navigation); return; } if (navigation.IsOnDependent) { foreignKey.Builder.IsRequired(true, fromDataAnnotation: true); } else { foreignKey.Builder.IsRequiredDependent(true, fromDataAnnotation: true); } }
private void ProcessNavigation(IConventionNavigationBuilder navigationBuilder) { var navigation = navigationBuilder.Metadata; var foreignKey = navigation.ForeignKey; var modelBuilder = navigationBuilder.ModelBuilder; if (!IsNonNullable(modelBuilder, navigation) || navigation.IsCollection) { return; } if (navigation.IsOnDependent) { foreignKey.Builder.IsRequired(true); } else { foreignKey.Builder.IsRequiredDependent(true); } }
private void ProcessNavigation(IConventionNavigationBuilder navigationBuilder) { var navigation = navigationBuilder.Metadata; var foreignKey = navigation.ForeignKey; if (navigation.IsCollection) { Dependencies.Logger.RequiredAttributeOnCollection(navigation); return; } var relationshipBuilder = foreignKey.Builder; if (!navigation.IsOnDependent) { var inverse = navigation.Inverse; if (inverse != null) { var attributes = GetAttributes <RequiredAttribute>(inverse.DeclaringEntityType, inverse); if (attributes.Any()) { Dependencies.Logger.RequiredAttributeOnBothNavigations(navigation, inverse); return; } } if (foreignKey.GetPrincipalEndConfigurationSource() != null) { Dependencies.Logger.RequiredAttributeOnDependent(foreignKey.PrincipalToDependent); return; } return; } relationshipBuilder.IsRequired(true, fromDataAnnotation: true); }
private void ProcessNavigation(IConventionNavigationBuilder navigationBuilder) { var navigation = navigationBuilder.Metadata; var foreignKey = navigation.ForeignKey; var relationshipBuilder = foreignKey.Builder; var modelBuilder = navigationBuilder.ModelBuilder; if (!IsNonNullable(modelBuilder, navigation) || navigation.IsCollection) { return; } if (!navigation.IsOnDependent) { var inverse = navigation.Inverse; if (inverse != null) { if (IsNonNullable(modelBuilder, inverse)) { Dependencies.Logger.NonNullableReferenceOnBothNavigations(navigation, inverse); return; } } if (foreignKey.GetPrincipalEndConfigurationSource() != null) { Dependencies.Logger.NonNullableReferenceOnDependent(navigation.ForeignKey.PrincipalToDependent); return; } return; } relationshipBuilder.IsRequired(true); }
public abstract IConventionNavigationBuilder?OnNavigationAdded(IConventionNavigationBuilder navigationBuilder);
public abstract IConventionNavigationBuilder OnNavigationAdded([NotNull] IConventionNavigationBuilder navigationBuilder);
/// <inheritdoc /> public virtual void ProcessNavigationAdded( IConventionNavigationBuilder navigationBuilder, IConventionContext <IConventionNavigationBuilder> context) { DiscoverField(navigationBuilder); }
public OnNavigationAddedNode(IConventionNavigationBuilder navigationBuilder) { NavigationBuilder = navigationBuilder; }
public override IConventionNavigationBuilder OnNavigationAdded(IConventionNavigationBuilder navigationBuilder) { Add(new OnNavigationAddedNode(navigationBuilder)); return(navigationBuilder); }
/// <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 IConventionNavigationBuilder OnNavigationAdded([NotNull] IConventionNavigationBuilder navigationBuilder) => _scope.OnNavigationAdded(navigationBuilder);
/// <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 IConventionNavigationBuilder?OnNavigationAdded(IConventionNavigationBuilder navigationBuilder) => _scope.OnNavigationAdded(navigationBuilder);
public void ProcessNavigationAdded(IConventionNavigationBuilder navigationBuilder, IConventionContext <IConventionNavigationBuilder> context) { var navigation = navigationBuilder.Metadata; ProcessNavigation(navigation); }
/// <summary> /// Called after a navigation property that has an attribute is added to an entity type. /// </summary> /// <param name="navigationBuilder"> The builder for the navigation. </param> /// <param name="attribute"> The attribute. </param> /// <param name="context"> Additional information associated with convention execution. </param> public virtual void ProcessNavigationAdded( [NotNull] IConventionNavigationBuilder navigationBuilder, [NotNull] TAttribute attribute, [NotNull] IConventionContext <IConventionNavigationBuilder> context) => throw new NotImplementedException();