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);
        }
Example #2
0
        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;
        }
Example #3
0
        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);