private TupleInternal <IEdmAssociationEnd, IEdmAssociationEnd> ComputeEnds()
        {
            IEdmAssociationEnd csdlSemanticsAssociationEnd;
            IEdmAssociationEnd edmAssociationEnd;

            if (this.association.End1 != null)
            {
                csdlSemanticsAssociationEnd = new CsdlSemanticsAssociationEnd(this.context, this, this.association.End1);
            }
            else
            {
                EdmError[] edmError = new EdmError[1];
                edmError[0] = new EdmError(base.Location, EdmErrorCode.InvalidAssociation, Strings.CsdlParser_InvalidAssociationIncorrectNumberOfEnds(string.Concat(this.Namespace, ".", this.Name)));
                IEdmAssociationEnd badAssociationEnd = new BadAssociationEnd(this, "End1", edmError);
                csdlSemanticsAssociationEnd = badAssociationEnd;
            }
            if (this.association.End2 != null)
            {
                edmAssociationEnd = new CsdlSemanticsAssociationEnd(this.context, this, this.association.End2);
            }
            else
            {
                EdmError[] edmErrorArray = new EdmError[1];
                edmErrorArray[0] = new EdmError(base.Location, EdmErrorCode.InvalidAssociation, Strings.CsdlParser_InvalidAssociationIncorrectNumberOfEnds(string.Concat(this.Namespace, ".", this.Name)));
                IEdmAssociationEnd badAssociationEnd1 = new BadAssociationEnd(this, "End2", edmErrorArray);
                edmAssociationEnd = badAssociationEnd1;
            }
            return(TupleInternal.Create <IEdmAssociationEnd, IEdmAssociationEnd>(csdlSemanticsAssociationEnd, edmAssociationEnd));
        }
        private IEdmAssociation ComputeAssociation()
        {
            CsdlSemanticsElement csdlSemanticsElement;
            CsdlSemanticsElement csdlSemanticsElement1;
            IEnumerable <IEdmDirectValueAnnotation> directValueAnnotations;
            IEdmAssociation edmAssociation        = this.declaringType.Context.FindAssociation(this.navigationProperty.Relationship);
            IEdmAssociation unresolvedAssociation = edmAssociation;

            if (edmAssociation == null)
            {
                unresolvedAssociation = new UnresolvedAssociation(this.navigationProperty.Relationship, base.Location);
            }
            IEdmAssociation edmAssociation1 = unresolvedAssociation;

            this.Model.SetAssociationNamespace(this, edmAssociation1.Namespace);
            this.Model.SetAssociationName(this, edmAssociation1.Name);
            CsdlSemanticsAssociation    csdlSemanticsAssociation = edmAssociation1 as CsdlSemanticsAssociation;
            CsdlSemanticsAssociationEnd end1 = edmAssociation1.End1 as CsdlSemanticsAssociationEnd;
            CsdlSemanticsAssociationEnd end2 = edmAssociation1.End2 as CsdlSemanticsAssociationEnd;

            if (csdlSemanticsAssociation != null && end1 != null && end2 != null)
            {
                CsdlSemanticsModel model = this.Model;
                CsdlSemanticsNavigationProperty         csdlSemanticsNavigationProperty = this;
                IEnumerable <IEdmDirectValueAnnotation> edmDirectValueAnnotations       = csdlSemanticsAssociation.DirectValueAnnotations;
                if (this.navigationProperty.FromRole == end1.Name)
                {
                    csdlSemanticsElement = end1;
                }
                else
                {
                    csdlSemanticsElement = end2;
                }
                IEnumerable <IEdmDirectValueAnnotation> directValueAnnotations1 = csdlSemanticsElement.DirectValueAnnotations;
                if (this.navigationProperty.FromRole == end1.Name)
                {
                    csdlSemanticsElement1 = end2;
                }
                else
                {
                    csdlSemanticsElement1 = end1;
                }
                IEnumerable <IEdmDirectValueAnnotation> edmDirectValueAnnotations1 = csdlSemanticsElement1.DirectValueAnnotations;
                if (edmAssociation1.ReferentialConstraint != null)
                {
                    directValueAnnotations = edmAssociation1.ReferentialConstraint.DirectValueAnnotations;
                }
                else
                {
                    directValueAnnotations = Enumerable.Empty <IEdmDirectValueAnnotation>();
                }
                model.SetAssociationAnnotations(csdlSemanticsNavigationProperty, edmDirectValueAnnotations, directValueAnnotations1, edmDirectValueAnnotations1, directValueAnnotations);
            }
            return(edmAssociation1);
        }
示例#3
0
        private IEdmAssociation ComputeAssociation()
        {
            IEdmAssociation association = this.declaringType.Context.FindAssociation(this.navigationProperty.Relationship) ?? new UnresolvedAssociation(this.navigationProperty.Relationship, this.Location);

            this.Model.SetAssociationNamespace(this, association.Namespace);
            this.Model.SetAssociationName(this, association.Name);
            CsdlSemanticsAssociation    csdlAssociation = association as CsdlSemanticsAssociation;
            CsdlSemanticsAssociationEnd end1            = association.End1 as CsdlSemanticsAssociationEnd;
            CsdlSemanticsAssociationEnd end2            = association.End2 as CsdlSemanticsAssociationEnd;

            if (csdlAssociation != null && end1 != null && end2 != null)
            {
                this.Model.SetAssociationAnnotations(
                    this,
                    csdlAssociation.DirectValueAnnotations,
                    (this.navigationProperty.FromRole == end1.Name ? end1 : end2).DirectValueAnnotations,
                    (this.navigationProperty.FromRole == end1.Name ? end2 : end1).DirectValueAnnotations,
                    association.ReferentialConstraint != null ? association.ReferentialConstraint.DirectValueAnnotations : Enumerable.Empty <IEdmDirectValueAnnotation>());
            }

            return(association);
        }
示例#4
0
		private TupleInternal<IEdmAssociationEnd, IEdmAssociationEnd> ComputeEnds()
		{
			IEdmAssociationEnd csdlSemanticsAssociationEnd;
			IEdmAssociationEnd edmAssociationEnd;
			if (this.association.End1 != null)
			{
				csdlSemanticsAssociationEnd = new CsdlSemanticsAssociationEnd(this.context, this, this.association.End1);
			}
			else
			{
				EdmError[] edmError = new EdmError[1];
				edmError[0] = new EdmError(base.Location, EdmErrorCode.InvalidAssociation, Strings.CsdlParser_InvalidAssociationIncorrectNumberOfEnds(string.Concat(this.Namespace, ".", this.Name)));
				IEdmAssociationEnd badAssociationEnd = new BadAssociationEnd(this, "End1", edmError);
				csdlSemanticsAssociationEnd = badAssociationEnd;
			}
			if (this.association.End2 != null)
			{
				edmAssociationEnd = new CsdlSemanticsAssociationEnd(this.context, this, this.association.End2);
			}
			else
			{
				EdmError[] edmErrorArray = new EdmError[1];
				edmErrorArray[0] = new EdmError(base.Location, EdmErrorCode.InvalidAssociation, Strings.CsdlParser_InvalidAssociationIncorrectNumberOfEnds(string.Concat(this.Namespace, ".", this.Name)));
				IEdmAssociationEnd badAssociationEnd1 = new BadAssociationEnd(this, "End2", edmErrorArray);
				edmAssociationEnd = badAssociationEnd1;
			}
			return TupleInternal.Create<IEdmAssociationEnd, IEdmAssociationEnd>(csdlSemanticsAssociationEnd, edmAssociationEnd);
		}