public void Can_create_navigation() { var foreignKey = CreateForeignKey(); var navigation = new Navigation("Deception", foreignKey); Assert.Same(foreignKey, navigation.ForeignKey); Assert.Equal("Deception", navigation.Name); Assert.Same(foreignKey.DeclaringEntityType, navigation.DeclaringEntityType); }
public virtual Navigation HasPrincipalToDependent([CanBeNull] string name) { var oldNavigation = PrincipalToDependent; if (oldNavigation != null) { PrincipalEntityType.RemoveNavigation(oldNavigation.Name); } Navigation navigation = null; if (name != null) { navigation = PrincipalEntityType.AddNavigation(name, this, pointsToPrincipal: false); } PrincipalToDependent = navigation; return navigation ?? oldNavigation; }
public virtual Navigation HasDependentToPrincipal([CanBeNull] string name) { var oldNavigation = DependentToPrincipal; if (oldNavigation != null) { DeclaringEntityType.RemoveNavigation(oldNavigation.Name); } Navigation newNavigation = null; if (name != null) { newNavigation = DeclaringEntityType.AddNavigation(name, this, pointsToPrincipal: true); } DependentToPrincipal = newNavigation; return newNavigation ?? oldNavigation; }
private InversePropertyAttribute GetInversePropertyAttributeOnNavigation(Navigation navigation) { return navigation.DeclaringEntityType.ClrType?.GetRuntimeProperties() .FirstOrDefault(p => string.Equals(p.Name, navigation.Name, StringComparison.OrdinalIgnoreCase)) ?.GetCustomAttribute<InversePropertyAttribute>(true); }
private static bool CanMergeWith( Navigation existingNavigation, string inverseName, InternalEntityTypeBuilder inverseEntityTypeBuilder) { var fk = existingNavigation.ForeignKey; return (fk.IsSelfReferencing() || fk.ResolveOtherEntityType(existingNavigation.DeclaringEntityType) == inverseEntityTypeBuilder.Metadata) && inverseEntityTypeBuilder.ModelBuilder.Entity(fk.DeclaringEntityType.Name, ConfigurationSource.Convention) .Relationship(fk, ConfigurationSource.Convention) .CanSetNavigation(inverseName, !existingNavigation.IsDependentToPrincipal(), ConfigurationSource.Convention); }
public virtual InternalRelationshipBuilder Apply(InternalRelationshipBuilder relationshipBuilder, Navigation navigation) => Apply(relationshipBuilder);