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