private static void VerifyMultiplicityCompatibility(RelationshipMultiplicity multiplicity, PropertyInfo propertyInfo) { var isCompatible = true; switch (multiplicity) { case RelationshipMultiplicity.Many: isCompatible = propertyInfo.PropertyType.IsCollection(); break; case RelationshipMultiplicity.One: case RelationshipMultiplicity.ZeroOrOne: isCompatible = !propertyInfo.PropertyType.IsCollection(); break; default: throw new InvalidOperationException(Strings.LightweightNavigationPropertyConfiguration_InvalidMultiplicity(multiplicity)); } if (!isCompatible) { throw new InvalidOperationException( Strings.LightweightNavigationPropertyConfiguration_IncompatibleMultiplicity( RelationshipMultiplicityConverter.MultiplicityToString(multiplicity), propertyInfo.DeclaringType.Name + "." + propertyInfo.Name, propertyInfo.PropertyType)); } }
private void HandleMultiplicityAttribute(XmlReader reader) { RelationshipMultiplicity multiplicity; if (!RelationshipMultiplicityConverter.TryParseMultiplicity(reader.Value, out multiplicity)) { this.AddError(ErrorCode.InvalidMultiplicity, EdmSchemaErrorSeverity.Error, reader, (object)Strings.InvalidRelationshipEndMultiplicity((object)this.ParentElement.Name, (object)reader.Value)); } this._multiplicity = new RelationshipMultiplicity?(multiplicity); }
// <summary> // Handle the Multiplicity attribute // </summary> // <param name="reader"> reader positioned at Type attribute </param> private void HandleMultiplicityAttribute(XmlReader reader) { DebugCheck.NotNull(reader); RelationshipMultiplicity multiplicity; if (!RelationshipMultiplicityConverter.TryParseMultiplicity(reader.Value, out multiplicity)) { AddError( ErrorCode.InvalidMultiplicity, EdmSchemaErrorSeverity.Error, reader, Strings.InvalidRelationshipEndMultiplicity(ParentElement.Name, reader.Value)); } _multiplicity = multiplicity; }
internal void WriteAssociationEndElementHeader(RelationshipEndMember associationEnd) { DebugCheck.NotNull(associationEnd); _xmlWriter.WriteStartElement(XmlConstants.End); _xmlWriter.WriteAttributeString(XmlConstants.Role, associationEnd.Name); var typeName = associationEnd.GetEntityType().Name; _xmlWriter.WriteAttributeString( XmlConstants.TypeAttribute, GetQualifiedTypeName(XmlConstants.Self, typeName)); _xmlWriter.WriteAttributeString( XmlConstants.Multiplicity, RelationshipMultiplicityConverter.MultiplicityToString(associationEnd.RelationshipMultiplicity)); }