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); }