コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: RelationshipEnd.cs プロジェクト: dotnet/ef6tools
        // <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;
        }
コード例 #4
0
        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));
        }