public void Inverts_if_dependent_entity_type_is_referenced() { DependentType.Relationship( PrincipalType, DependentType, null, null, null, null, ConfigurationSource.Convention); var relationshipBuilder = DependentType.Relationship( DependentType, PrincipalType, null, null, null, null, ConfigurationSource.Convention, isUnique: true); var newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(relationshipBuilder); Assert.NotSame(relationshipBuilder, newRelationshipBuilder); Assert.Same(DependentType.Metadata, newRelationshipBuilder.Metadata.EntityType); newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(newRelationshipBuilder); var fk = (IForeignKey)newRelationshipBuilder.Metadata; Assert.Same(PrimaryKey, fk.PrincipalKey.Properties.Single()); Assert.True(fk.IsUnique); Assert.True(fk.IsRequired); Assert.Empty(PrincipalType.Metadata.ForeignKeys); }
public void Does_not_invert_if_both_are_referenced() { DependentType.Relationship( PrincipalType, DependentType, null, null, null, null, ConfigurationSource.Convention); DependentType.Relationship( DependentType, PrincipalType, null, null, null, null, ConfigurationSource.Convention); var relationshipBuilder = DependentType.Relationship( DependentType, PrincipalType, null, null, null, null, ConfigurationSource.Convention, isUnique: true); var newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(relationshipBuilder); Assert.NotSame(relationshipBuilder, newRelationshipBuilder); Assert.Same(PrincipalType.Metadata, newRelationshipBuilder.Metadata.EntityType); newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(newRelationshipBuilder); var fk = (IForeignKey)newRelationshipBuilder.Metadata; Assert.Same(DependentType.Metadata.GetPrimaryKey(), fk.PrincipalKey); Assert.True(fk.IsUnique); Assert.True(fk.IsRequired); }
public void Inverts_if_principal_entity_type_can_have_nullable_fk_property_for_non_required_relationship() { DependentType.Property(DependentEntity.PeEKaYProperty, ConfigurationSource.Convention); var fkProperty = PrincipalType.Property(PrincipalEntity.DependentEntityKayPeeProperty, ConfigurationSource.Convention).Metadata; var relationshipBuilder = DependentType.Relationship( PrincipalType, DependentType, null, null, null, null, ConfigurationSource.Convention, isUnique: true, isRequired: false); var newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(relationshipBuilder); Assert.NotSame(relationshipBuilder, newRelationshipBuilder); Assert.Same(PrincipalType.Metadata, newRelationshipBuilder.Metadata.EntityType); newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(newRelationshipBuilder); var fk = (IForeignKey)PrincipalType.Metadata.ForeignKeys.Single(); Assert.Same(fk, newRelationshipBuilder.Metadata); Assert.Same(fkProperty, fk.Properties.Single()); Assert.Same(DependentType.Metadata.GetPrimaryKey(), fk.PrincipalKey); Assert.True(fk.IsUnique); Assert.False(fk.IsRequired); Assert.Empty(DependentType.Metadata.ForeignKeys); }
public void Does_not_invert_if_both_entity_types_have_navigations() { var relationshipBuilder = DependentType.Relationship( DependentType, PrincipalType, "InverseReferenceNav", "SomeNav", null, null, ConfigurationSource.Convention, isUnique: true); var newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(relationshipBuilder); Assert.NotSame(relationshipBuilder, newRelationshipBuilder); Assert.Same(PrincipalType.Metadata, newRelationshipBuilder.Metadata.EntityType); newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(newRelationshipBuilder); var fk = (IForeignKey)PrincipalType.Metadata.ForeignKeys.Single(); Assert.Same(fk, newRelationshipBuilder.Metadata); Assert.Same(DependentType.Metadata.GetPrimaryKey(), fk.PrincipalKey); Assert.True(fk.IsUnique); Assert.True(fk.IsRequired); Assert.Empty(DependentType.Metadata.ForeignKeys); }
public void Does_not_invert_if_dependent_entity_type_can_have_non_pk_fk_property() { var fkProperty = DependentType.Property(DependentEntity.PeEKaYProperty, ConfigurationSource.Convention).Metadata; var relationshipBuilder = DependentType.Relationship( PrincipalType, DependentType, null, null, null, null, ConfigurationSource.Convention, isUnique: true); var newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(relationshipBuilder); Assert.NotSame(relationshipBuilder, newRelationshipBuilder); Assert.Same(DependentType.Metadata, newRelationshipBuilder.Metadata.EntityType); newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(newRelationshipBuilder); var fk = (IForeignKey)DependentType.Metadata.ForeignKeys.Single(); Assert.Same(fk, newRelationshipBuilder.Metadata); Assert.Same(fkProperty, fk.Properties.Single()); Assert.Same(PrimaryKey, fk.PrincipalKey.Properties.Single()); Assert.True(fk.IsUnique); Assert.True(fk.IsRequired); }
public void Does_not_invert_if_both_entity_types_can_have_non_pk_fk_property() { DependentType.Property(DependentEntity.PeEKaYProperty, ConfigurationSource.Convention); PrincipalType.Property(PrincipalEntity.DependentEntityKayPeeProperty, ConfigurationSource.Convention); var relationshipBuilder = DependentType.Relationship( DependentType, PrincipalType, null, null, null, null, ConfigurationSource.Convention, isUnique: true); var newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(relationshipBuilder); Assert.NotSame(relationshipBuilder, newRelationshipBuilder); Assert.Same(PrincipalType.Metadata, newRelationshipBuilder.Metadata.EntityType); newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(newRelationshipBuilder); var fk = (IForeignKey)newRelationshipBuilder.Metadata; Assert.Same(DependentType.Metadata.GetPrimaryKey(), fk.PrincipalKey); Assert.True(fk.IsUnique); Assert.False(fk.IsRequired); }
public void Matches_composite_dependent_PK_for_unique_FK() { var fkProperty1 = DependentTypeWithCompositeKey.Metadata.GetPrimaryKey().Properties[0]; var fkProperty2 = DependentTypeWithCompositeKey.Metadata.GetPrimaryKey().Properties[1]; var relationshipBuilder = DependentTypeWithCompositeKey.Relationship( PrincipalTypeWithCompositeKey, DependentTypeWithCompositeKey, "NavProp", "InverseReferenceNav", null, PrincipalTypeWithCompositeKey.Metadata.GetPrimaryKey().Properties, ConfigurationSource.Convention, isUnique: true); var newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(relationshipBuilder); Assert.NotSame(relationshipBuilder, newRelationshipBuilder); var fk = (IForeignKey)DependentTypeWithCompositeKey.Metadata.ForeignKeys.Single(); Assert.Same(fk, newRelationshipBuilder.Metadata); Assert.Same(fkProperty1, fk.Properties[0]); Assert.Same(fkProperty2, fk.Properties[1]); Assert.Same(PrincipalTypeWithCompositeKey.Metadata.GetPrimaryKey(), fk.PrincipalKey); Assert.True(fk.IsUnique); Assert.True(fk.IsRequired); }
public void Matches_PK_name_properties() { var fkProperty1 = DependentTypeWithCompositeKey.Property(DependentEntityWithCompositeKey.IdProperty, ConfigurationSource.Convention); var fkProperty2 = DependentTypeWithCompositeKey.Property(DependentEntityWithCompositeKey.NameProperty, ConfigurationSource.Convention); fkProperty2.Required(true, ConfigurationSource.Convention); var relationshipBuilder = DependentTypeWithCompositeKey.Relationship( PrincipalTypeWithCompositeKey, DependentTypeWithCompositeKey, "NavProp", null, null, null, ConfigurationSource.Convention, isUnique: true); var newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(relationshipBuilder); Assert.NotSame(relationshipBuilder, newRelationshipBuilder); var fk = (IForeignKey)DependentTypeWithCompositeKey.Metadata.ForeignKeys.Single(); Assert.Same(fk, newRelationshipBuilder.Metadata); Assert.Same(fkProperty1.Metadata, fk.Properties[0]); Assert.Same(fkProperty2.Metadata, fk.Properties[1]); Assert.Same(CompositePrimaryKey[0], fk.PrincipalKey.Properties[0]); Assert.Same(CompositePrimaryKey[1], fk.PrincipalKey.Properties[1]); Assert.True(fk.IsUnique); Assert.True(fk.IsRequired); }
public void Matches_Id_property() { var fkProperty = DependentType.Property(DependentEntity.IDProperty, ConfigurationSource.Convention).Metadata; var relationshipBuilder = DependentType.Relationship( PrincipalType, DependentType, "SomeNav", null, null, null, ConfigurationSource.Convention, isUnique: true); var newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(relationshipBuilder); Assert.NotSame(relationshipBuilder, newRelationshipBuilder); var fk = (IForeignKey)DependentType.Metadata.ForeignKeys.Single(); Assert.Same(fk, newRelationshipBuilder.Metadata); Assert.Same(fkProperty, fk.Properties.Single()); Assert.Same(PrimaryKey, fk.PrincipalKey.Properties.Single()); Assert.True(fk.IsUnique); Assert.True(fk.IsRequired); }
public void Matches_navigation_plus_PK_name_property() { var fkProperty = DependentType.Property(DependentEntity.SomeNavPeEKaYProperty, ConfigurationSource.Convention).Metadata; DependentType.Property(DependentEntity.SomeNavIDProperty, ConfigurationSource.Convention); DependentType.Property(DependentEntity.PrincipalEntityIDProperty, ConfigurationSource.Convention); DependentType.Property(DependentEntity.PrincipalEntityPeEKaYProperty, ConfigurationSource.Convention); DependentType.Property(DependentEntity.PeEKaYProperty, ConfigurationSource.Convention); var dependentEntityTypeBuilder = DependentType; var relationshipBuilder = dependentEntityTypeBuilder.Relationship( PrincipalType, dependentEntityTypeBuilder, "SomeNav", null, null, null, ConfigurationSource.Convention, isUnique: false); var newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(relationshipBuilder); Assert.NotSame(relationshipBuilder, newRelationshipBuilder); var fk = (IForeignKey)DependentType.Metadata.ForeignKeys.Single(); Assert.Same(fk, newRelationshipBuilder.Metadata); Assert.Same(fkProperty, fk.Properties.Single()); Assert.Same(PrimaryKey, fk.PrincipalKey.Properties.Single()); Assert.False(fk.IsUnique); Assert.True(fk.IsRequired); }
public void Matches_dependent_PK_for_unique_FK() { var fkProperty = DependentType.Metadata.GetPrimaryKey().Properties.Single(); var relationshipBuilder = DependentType.Relationship( PrincipalType, DependentType, "SomeNav", "InverseReferenceNav", null, PrincipalType.Metadata.GetPrimaryKey().Properties, ConfigurationSource.Convention, isUnique: true); var newRelationshipBuilder = new ForeignKeyPropertyDiscoveryConvention().Apply(relationshipBuilder); Assert.NotSame(relationshipBuilder, newRelationshipBuilder); var fk = (IForeignKey)DependentType.Metadata.GetForeignKeys().Single(); Assert.Same(fk, newRelationshipBuilder.Metadata); Assert.Same(fkProperty, fk.Properties.Single()); Assert.Same(PrimaryKey, fk.PrincipalKey.Properties.Single()); Assert.True(fk.IsUnique); Assert.True(fk.IsRequired); }