Beispiel #1
0
        private bool ValidateMultiplicity(Association element, ModelRoot modelRoot, List <string> errorMessages, Store store, ref bool doForeignKeyFixup)
        {
            if (!element.AllCardinalitiesAreValid(out string errorMessage))
            {
                errorMessages.Add(errorMessage);
                return(false);
            }

            if (!element.Source.IsDependentType && !element.Target.IsDependentType)
            {
                if (element.Is(Multiplicity.One, Multiplicity.One) || element.Is(Multiplicity.ZeroOne, Multiplicity.ZeroOne))
                {
                    if (element.SourceRole != EndpointRole.NotSet)
                    {
                        element.SourceRole = EndpointRole.NotSet;
                    }

                    if (element.TargetRole != EndpointRole.NotSet)
                    {
                        element.TargetRole = EndpointRole.NotSet;
                    }
                }
                else
                {
                    SetEndpointRoles(element);
                }
            }

            // cascade delete behavior could now be illegal. Reset to default
            element.SourceDeleteAction = DeleteAction.Default;
            element.TargetDeleteAction = DeleteAction.Default;

            if (element.Dependent == null)
            {
                element.FKPropertyName = null;
                doForeignKeyFixup      = true;
            }

            if ((store.ModelRoot().EntityFrameworkVersion == EFVersion.EF6 || store.ModelRoot().IsEFCore5Plus) &&
                element.SourceMultiplicity != Multiplicity.ZeroMany &&
                element.TargetMultiplicity != Multiplicity.ZeroMany)
            {
                element.FKPropertyName = null;
                doForeignKeyFixup      = true;
            }

            return(true);
        }