/// <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 InternalRelationshipBuilder Attach([CanBeNull] InternalEntityTypeBuilder entityTypeBuilder = null)
        {
            entityTypeBuilder = entityTypeBuilder ?? Relationship.Metadata.DeclaringEntityType.Builder;
            var newRelationship = Relationship.Attach(entityTypeBuilder);

            if (newRelationship != null)
            {
                WeakEntityTypeSnapshot?.Attach(
                    newRelationship.Metadata.ResolveOtherEntityType(entityTypeBuilder.Metadata).Builder);
            }

            return(newRelationship);
        }
            public InternalRelationshipBuilder Attach()
            {
                var newRelationship = Relationship.Attach(RelationshipConfigurationSource);
                var inverted        = Relationship.Metadata.EntityType != newRelationship.Metadata.EntityType;

                if (NavigationToPrincipalName != null)
                {
                    newRelationship = inverted
                        ? newRelationship.NavigationToDependent(NavigationToPrincipalName, RelationshipConfigurationSource)
                        : newRelationship.NavigationToPrincipal(NavigationToPrincipalName, RelationshipConfigurationSource);
                }

                inverted = Relationship.Metadata.EntityType != newRelationship.Metadata.EntityType;
                if (NavigationToDependentName != null)
                {
                    newRelationship = inverted
                        ? newRelationship.NavigationToPrincipal(NavigationToDependentName, RelationshipConfigurationSource)
                        : newRelationship.NavigationToDependent(NavigationToDependentName, RelationshipConfigurationSource);
                }

                return(newRelationship);
            }