Example #1
0
        private IEdmAssociationEnd ComputeTo()
        {
            string toRole   = this.navigationProperty.ToRole;
            string fromRole = this.navigationProperty.FromRole;

            this.Model.SetAssociationEndName(this, fromRole);

            IEdmAssociation association = this.Association;

            if (toRole == fromRole)
            {
                return(new BadCsdlSemanticsNavigationPropertyToEnd(association, toRole, new EdmError[] { new EdmError(this.Location, EdmErrorCode.BadNavigationProperty, Microsoft.Data.Edm.Strings.EdmModel_Validator_Semantic_BadNavigationPropertyRolesCannotBeTheSame(this.Name)) }));
            }

            if (association.End1.Name == toRole)
            {
                return(association.End1);
            }
            else if (association.End2.Name == toRole)
            {
                return(association.End2);
            }
            else
            {
                return(new BadCsdlSemanticsNavigationPropertyToEnd(
                           this.Association,
                           toRole,
                           new EdmError[]
                {
                    new EdmError(this.Location, EdmErrorCode.BadNavigationProperty, Microsoft.Data.Edm.Strings.EdmModel_Validator_Semantic_BadNavigationPropertyUndefinedRole(this.Name, toRole, association.Name))
                }));
            }
        }
        private IEdmAssociationEnd ComputeTo()
        {
            string toRole   = this.navigationProperty.ToRole;
            string fromRole = this.navigationProperty.FromRole;

            this.Model.SetAssociationEndName(this, fromRole);
            IEdmAssociation association = this.Association;

            if (toRole != fromRole)
            {
                if (association.End1.Name != toRole)
                {
                    if (association.End2.Name != toRole)
                    {
                        EdmError[] edmError = new EdmError[1];
                        edmError[0] = new EdmError(base.Location, EdmErrorCode.BadNavigationProperty, Strings.EdmModel_Validator_Semantic_BadNavigationPropertyUndefinedRole(this.Name, toRole, association.Name));
                        return(new CsdlSemanticsNavigationProperty.BadCsdlSemanticsNavigationPropertyToEnd(this.Association, toRole, edmError));
                    }
                    else
                    {
                        return(association.End2);
                    }
                }
                else
                {
                    return(association.End1);
                }
            }
            else
            {
                EdmError[] edmErrorArray = new EdmError[1];
                edmErrorArray[0] = new EdmError(base.Location, EdmErrorCode.BadNavigationProperty, Strings.EdmModel_Validator_Semantic_BadNavigationPropertyRolesCannotBeTheSame(this.Name));
                return(new CsdlSemanticsNavigationProperty.BadCsdlSemanticsNavigationPropertyToEnd(association, toRole, edmErrorArray));
            }
        }
        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);
        }
Example #4
0
        private IEdmAssociation ComputeElementType()
        {
            IEdmAssociation edmAssociation        = this.context.Context.FindAssociation(this.associationSet.Association);
            IEdmAssociation unresolvedAssociation = edmAssociation;

            if (edmAssociation == null)
            {
                unresolvedAssociation = new UnresolvedAssociation(this.associationSet.Association, base.Location);
            }
            return(unresolvedAssociation);
        }
Example #5
0
        internal static IEdmAssociation CreateAmbiguousAssociationBinding(IEdmAssociation first, IEdmAssociation second)
        {
            AmbiguousAssociationBinding binding = first as AmbiguousAssociationBinding;

            if (binding != null)
            {
                binding.AddBinding(second);
                return(binding);
            }
            return(new AmbiguousAssociationBinding(first, second));
        }
Example #6
0
		public BadAssociationEnd(IEdmAssociation declaringAssociation, string role, IEnumerable<EdmError> errors) : base(errors)
		{
			this.type = new Cache<BadAssociationEnd, BadEntityType>();
			string str = role;
			string empty = str;
			if (str == null)
			{
				empty = string.Empty;
			}
			this.role = empty;
			this.declaringAssociation = declaringAssociation;
		}
Example #7
0
        internal static IEdmAssociation CreateAmbiguousAssociationBinding(IEdmAssociation first, IEdmAssociation second)
        {
            var ambiguous = first as AmbiguousAssociationBinding;

            if (ambiguous != null)
            {
                ambiguous.AddBinding(second);
                return(ambiguous);
            }

            return(new AmbiguousAssociationBinding(first, second));
        }
Example #8
0
        public BadAssociationEnd(IEdmAssociation declaringAssociation, string role, IEnumerable <EdmError> errors) : base(errors)
        {
            this.type = new Cache <BadAssociationEnd, BadEntityType>();
            string str   = role;
            string empty = str;

            if (str == null)
            {
                empty = string.Empty;
            }
            this.role = empty;
            this.declaringAssociation = declaringAssociation;
        }
        public IEnumerable <CsdlSemanticsAssociationSet> FindAssociationSets(IEdmAssociation association)
        {
            IEnumerable <CsdlSemanticsAssociationSet> csdlSemanticsAssociationSets = null;

            if (this.AssociationSetMappings.TryGetValue(association, out csdlSemanticsAssociationSets))
            {
                return(csdlSemanticsAssociationSets);
            }
            else
            {
                return(null);
            }
        }
Example #10
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);
        }
        private IEdmAssociationEnd ComputeFrom()
        {
            IEdmAssociation association = this.Association;
            string          fromRole    = this.navigationProperty.FromRole;

            if (association.End1.Name != fromRole)
            {
                if (association.End2.Name != fromRole)
                {
                    EdmError[] edmError = new EdmError[1];
                    edmError[0] = new EdmError(base.Location, EdmErrorCode.BadNavigationProperty, Strings.EdmModel_Validator_Semantic_BadNavigationPropertyUndefinedRole(this.Name, fromRole, association.Name));
                    return(new CsdlSemanticsNavigationProperty.BadCsdlSemanticsNavigationPropertyToEnd(this.Association, fromRole, edmError));
                }
                else
                {
                    return(association.End2);
                }
            }
            else
            {
                return(association.End1);
            }
        }
Example #12
0
        private IEdmAssociationEnd ComputeFrom()
        {
            IEdmAssociation association = this.Association;
            string          fromRole    = this.navigationProperty.FromRole;

            if (association.End1.Name == fromRole)
            {
                return(association.End1);
            }
            else if (association.End2.Name == fromRole)
            {
                return(association.End2);
            }
            else
            {
                return(new BadCsdlSemanticsNavigationPropertyToEnd(
                           this.Association,
                           fromRole,
                           new EdmError[]
                {
                    new EdmError(this.Location, EdmErrorCode.BadNavigationProperty, Microsoft.Data.Edm.Strings.EdmModel_Validator_Semantic_BadNavigationPropertyUndefinedRole(this.Name, fromRole, association.Name))
                }));
            }
        }
			public BadCsdlSemanticsNavigationPropertyToEnd(IEdmAssociation declaringAssociation, string role, IEnumerable<EdmError> errors) : base(declaringAssociation, role, errors)
			{
			}
 public BadCsdlSemanticsNavigationPropertyToEnd(IEdmAssociation declaringAssociation, string role, IEnumerable <EdmError> errors) : base(declaringAssociation, role, errors)
 {
 }
 public BadAssociationEnd(IEdmAssociation declaringAssociation, string role, IEnumerable<EdmError> errors)
     : base(errors)
 {
     this.role = role ?? string.Empty;
     this.declaringAssociation = declaringAssociation;
 }
Example #16
0
        public IEnumerable <CsdlSemanticsAssociationSet> FindAssociationSets(IEdmAssociation association)
        {
            IEnumerable <CsdlSemanticsAssociationSet> result;

            return(this.AssociationSetMappings.TryGetValue(association, out result) ? result : null);
        }
 public UnresolvedAssociationEnd(IEdmAssociation declaringAssociation, string role, EdmLocation location)
     : base(declaringAssociation, role, new EdmError[] { new EdmError(location, EdmErrorCode.BadNonComputableAssociationEnd, Edm.Strings.Bad_UncomputableAssociationEnd(role)) })
 {
 }
 public UnresolvedAssociationEnd(IEdmAssociation declaringAssociation, string role, EdmLocation location)
     : base(declaringAssociation, role, new EdmError[] { new EdmError(location, EdmErrorCode.BadNonComputableAssociationEnd, Strings.Bad_UncomputableAssociationEnd(role)) })
 {
 }
 public IEnumerable<CsdlSemanticsAssociationSet> FindAssociationSets(IEdmAssociation association)
 {
     IEnumerable<CsdlSemanticsAssociationSet> result;
     return this.AssociationSetMappings.TryGetValue(association, out result) ? result : null;
 }
Example #20
0
 public BadAssociationEnd(IEdmAssociation declaringAssociation, string role, IEnumerable <EdmError> errors)
     : base(errors)
 {
     this.role = role ?? string.Empty;
     this.declaringAssociation = declaringAssociation;
 }
		public IEnumerable<CsdlSemanticsAssociationSet> FindAssociationSets(IEdmAssociation association)
		{
			IEnumerable<CsdlSemanticsAssociationSet> csdlSemanticsAssociationSets = null;
			if (this.AssociationSetMappings.TryGetValue(association, out csdlSemanticsAssociationSets))
			{
				return csdlSemanticsAssociationSets;
			}
			else
			{
				return null;
			}
		}
Example #22
0
		internal static IEdmAssociation CreateAmbiguousAssociationBinding(IEdmAssociation first, IEdmAssociation second)
		{
			AmbiguousAssociationBinding binding = first as AmbiguousAssociationBinding;
			if (binding != null)
			{
				binding.AddBinding(second);
				return binding;
			}
			return new AmbiguousAssociationBinding(first, second);
		}