コード例 #1
0
        private Dictionary <IEdmAssociation, IEnumerable <CsdlSemanticsAssociationSet> > ComputeAssociationSetMappings()
        {
            Dictionary <IEdmAssociation, IEnumerable <CsdlSemanticsAssociationSet> > associationSetMappings = new Dictionary <IEdmAssociation, IEnumerable <CsdlSemanticsAssociationSet> >();

            if (this.entityContainer.Extends != null)
            {
                // Extends is either a CsdlSemanticsEntityContainer or BadEntityContainer.
                CsdlSemanticsEntityContainer csdlExtends = this.Extends as CsdlSemanticsEntityContainer;
                if (csdlExtends != null)
                {
                    foreach (KeyValuePair <IEdmAssociation, IEnumerable <CsdlSemanticsAssociationSet> > mapping in csdlExtends.AssociationSetMappings)
                    {
                        associationSetMappings[mapping.Key] = new List <CsdlSemanticsAssociationSet>(mapping.Value);
                    }
                }
            }

            foreach (CsdlSemanticsAssociationSet associationSet in this.AssociationSets)
            {
                CsdlSemanticsAssociation association = associationSet.Association as CsdlSemanticsAssociation;
                if (association != null)
                {
                    IEnumerable <CsdlSemanticsAssociationSet> associationSets;
                    if (!associationSetMappings.TryGetValue(association, out associationSets))
                    {
                        associationSets = new List <CsdlSemanticsAssociationSet>();
                        associationSetMappings[association] = associationSets;
                    }

                    ((List <CsdlSemanticsAssociationSet>)associationSets).Add(associationSet);
                }
            }

            return(associationSetMappings);
        }
コード例 #2
0
        private IEnumerable <IEdmEntityContainerElement> ComputeElements()
        {
            List <IEdmEntityContainerElement> edmEntityContainerElements = new List <IEdmEntityContainerElement>();
            CsdlSemanticsEntityContainer      extends = this.Extends as CsdlSemanticsEntityContainer;

            if (extends != null)
            {
                foreach (CsdlEntitySet entitySet in extends.entityContainer.EntitySets)
                {
                    CsdlSemanticsEntitySet csdlSemanticsEntitySet = new CsdlSemanticsEntitySet(this, entitySet);
                    edmEntityContainerElements.Add(csdlSemanticsEntitySet);
                }
                foreach (CsdlFunctionImport functionImport in extends.entityContainer.FunctionImports)
                {
                    CsdlSemanticsFunctionImport csdlSemanticsFunctionImport = new CsdlSemanticsFunctionImport(this, functionImport);
                    edmEntityContainerElements.Add(csdlSemanticsFunctionImport);
                }
            }
            foreach (CsdlEntitySet csdlEntitySet in this.entityContainer.EntitySets)
            {
                CsdlSemanticsEntitySet csdlSemanticsEntitySet1 = new CsdlSemanticsEntitySet(this, csdlEntitySet);
                edmEntityContainerElements.Add(csdlSemanticsEntitySet1);
            }
            foreach (CsdlFunctionImport csdlFunctionImport in this.entityContainer.FunctionImports)
            {
                CsdlSemanticsFunctionImport csdlSemanticsFunctionImport1 = new CsdlSemanticsFunctionImport(this, csdlFunctionImport);
                edmEntityContainerElements.Add(csdlSemanticsFunctionImport1);
            }
            return(edmEntityContainerElements);
        }
コード例 #3
0
 public CsdlSemanticsEntitySet(CsdlSemanticsEntityContainer container, CsdlEntitySet entitySet) : base(entitySet)
 {
     this.elementTypeCache       = new Cache <CsdlSemanticsEntitySet, IEdmEntityType>();
     this.navigationTargetsCache = new Cache <CsdlSemanticsEntitySet, IEnumerable <IEdmNavigationTargetMapping> >();
     this.container = container;
     this.entitySet = entitySet;
 }
コード例 #4
0
        private Dictionary <IEdmAssociation, IEnumerable <CsdlSemanticsAssociationSet> > ComputeAssociationSetMappings()
        {
            IEnumerable <CsdlSemanticsAssociationSet> csdlSemanticsAssociationSets = null;
            Dictionary <IEdmAssociation, IEnumerable <CsdlSemanticsAssociationSet> > edmAssociations = new Dictionary <IEdmAssociation, IEnumerable <CsdlSemanticsAssociationSet> >();

            if (this.entityContainer.Extends != null)
            {
                CsdlSemanticsEntityContainer extends = this.Extends as CsdlSemanticsEntityContainer;
                if (extends != null)
                {
                    foreach (KeyValuePair <IEdmAssociation, IEnumerable <CsdlSemanticsAssociationSet> > associationSetMapping in extends.AssociationSetMappings)
                    {
                        edmAssociations[associationSetMapping.Key] = new List <CsdlSemanticsAssociationSet>(associationSetMapping.Value);
                    }
                }
            }
            foreach (CsdlSemanticsAssociationSet associationSet in this.AssociationSets)
            {
                CsdlSemanticsAssociation association = associationSet.Association as CsdlSemanticsAssociation;
                if (association == null)
                {
                    continue;
                }
                if (!edmAssociations.TryGetValue(association, out csdlSemanticsAssociationSets))
                {
                    csdlSemanticsAssociationSets = new List <CsdlSemanticsAssociationSet>();
                    edmAssociations[association] = csdlSemanticsAssociationSets;
                }
                ((List <CsdlSemanticsAssociationSet>)csdlSemanticsAssociationSets).Add(associationSet);
            }
            return(edmAssociations);
        }
コード例 #5
0
        private IEnumerable <CsdlSemanticsAssociationSet> ComputeAssociationSets()
        {
            List <CsdlSemanticsAssociationSet> associationSets = new List <CsdlSemanticsAssociationSet>();

            if (this.entityContainer.Extends != null)
            {
                // Extends is either a CsdlSemanticsEntityContainer or BadEntityContainer.
                CsdlSemanticsEntityContainer csdlExtends = this.Extends as CsdlSemanticsEntityContainer;
                if (csdlExtends != null)
                {
                    foreach (CsdlAssociationSet associationSet in csdlExtends.entityContainer.AssociationSets)
                    {
                        CsdlSemanticsAssociationSet semanticsSet = new CsdlSemanticsAssociationSet(this, associationSet);
                        associationSets.Add(semanticsSet);
                    }
                }
            }

            foreach (CsdlAssociationSet associationSet in this.entityContainer.AssociationSets)
            {
                CsdlSemanticsAssociationSet semanticsSet = new CsdlSemanticsAssociationSet(this, associationSet);
                associationSets.Add(semanticsSet);
            }

            return(associationSets);
        }
コード例 #6
0
        public IEdmEntitySet FindNavigationTarget(IEdmNavigationProperty property)
        {
            IEdmEntitySet entitySet;
            CsdlSemanticsNavigationProperty csdlSemanticsNavigationProperty = property as CsdlSemanticsNavigationProperty;

            if (csdlSemanticsNavigationProperty != null)
            {
                IEnumerator <IEdmEntityContainer> enumerator = this.Model.EntityContainers().GetEnumerator();
                using (enumerator)
                {
                    while (enumerator.MoveNext())
                    {
                        CsdlSemanticsEntityContainer current = (CsdlSemanticsEntityContainer)enumerator.Current;
                        IEnumerable <CsdlSemanticsAssociationSet> csdlSemanticsAssociationSets = current.FindAssociationSets(csdlSemanticsNavigationProperty.Association);
                        if (csdlSemanticsAssociationSets == null)
                        {
                            continue;
                        }
                        IEnumerator <CsdlSemanticsAssociationSet> enumerator1 = csdlSemanticsAssociationSets.GetEnumerator();
                        using (enumerator1)
                        {
                            while (enumerator1.MoveNext())
                            {
                                CsdlSemanticsAssociationSet    csdlSemanticsAssociationSet = enumerator1.Current;
                                CsdlSemanticsAssociationSetEnd end1 = csdlSemanticsAssociationSet.End1 as CsdlSemanticsAssociationSetEnd;
                                CsdlSemanticsAssociationSetEnd end2 = csdlSemanticsAssociationSet.End2 as CsdlSemanticsAssociationSetEnd;
                                if (csdlSemanticsAssociationSet.End1.EntitySet != this || csdlSemanticsNavigationProperty.To != csdlSemanticsAssociationSet.End2.Role)
                                {
                                    if (csdlSemanticsAssociationSet.End2.EntitySet != this || csdlSemanticsNavigationProperty.To != csdlSemanticsAssociationSet.End1.Role)
                                    {
                                        continue;
                                    }
                                    this.Model.SetAssociationSetName(csdlSemanticsAssociationSet.End2.EntitySet, property, csdlSemanticsAssociationSet.Name);
                                    if (end1 != null && end2 != null)
                                    {
                                        this.Model.SetAssociationSetAnnotations(end2.EntitySet, property, csdlSemanticsAssociationSet.DirectValueAnnotations, end2.DirectValueAnnotations, end1.DirectValueAnnotations);
                                    }
                                    entitySet = csdlSemanticsAssociationSet.End1.EntitySet;
                                    return(entitySet);
                                }
                                else
                                {
                                    this.Model.SetAssociationSetName(csdlSemanticsAssociationSet.End1.EntitySet, property, csdlSemanticsAssociationSet.Name);
                                    if (end1 != null && end2 != null)
                                    {
                                        this.Model.SetAssociationSetAnnotations(end1.EntitySet, property, csdlSemanticsAssociationSet.DirectValueAnnotations, end1.DirectValueAnnotations, end2.DirectValueAnnotations);
                                    }
                                    entitySet = csdlSemanticsAssociationSet.End2.EntitySet;
                                    return(entitySet);
                                }
                            }
                        }
                    }
                    return(null);
                }
                return(entitySet);
            }
            return(null);
        }
コード例 #7
0
 public CsdlSemanticsAssociationSet(CsdlSemanticsEntityContainer context, CsdlAssociationSet associationSet) : base(associationSet)
 {
     this.endsCache        = new Cache <CsdlSemanticsAssociationSet, TupleInternal <CsdlSemanticsAssociationSetEnd, CsdlSemanticsAssociationSetEnd> >();
     this.elementTypeCache = new Cache <CsdlSemanticsAssociationSet, IEdmAssociation>();
     this.errorsCache      = new Cache <CsdlSemanticsAssociationSet, IEnumerable <EdmError> >();
     this.context          = context;
     this.associationSet   = associationSet;
 }
コード例 #8
0
        private IEdmEntityContainer ComputeExtends()
        {
            if (this.entityContainer.Extends != null)
            {
                CsdlSemanticsEntityContainer csdlContainer = this.Model.FindDeclaredEntityContainer(this.entityContainer.Extends) as CsdlSemanticsEntityContainer;
                if (csdlContainer != null)
                {
                    IEdmEntityContainer junk = csdlContainer.Extends; // Evaluate the inductive step to detect cycles.
                    return(csdlContainer);
                }

                return(new UnresolvedEntityContainer(this.entityContainer.Extends, this.Location));
            }

            return(null);
        }
コード例 #9
0
        private IEnumerable <CsdlSemanticsAssociationSet> ComputeAssociationSets()
        {
            List <CsdlSemanticsAssociationSet> csdlSemanticsAssociationSets = new List <CsdlSemanticsAssociationSet>();

            if (this.entityContainer.Extends != null)
            {
                CsdlSemanticsEntityContainer extends = this.Extends as CsdlSemanticsEntityContainer;
                if (extends != null)
                {
                    foreach (CsdlAssociationSet associationSet in extends.entityContainer.AssociationSets)
                    {
                        CsdlSemanticsAssociationSet csdlSemanticsAssociationSet = new CsdlSemanticsAssociationSet(this, associationSet);
                        csdlSemanticsAssociationSets.Add(csdlSemanticsAssociationSet);
                    }
                }
            }
            foreach (CsdlAssociationSet csdlAssociationSet in this.entityContainer.AssociationSets)
            {
                CsdlSemanticsAssociationSet csdlSemanticsAssociationSet1 = new CsdlSemanticsAssociationSet(this, csdlAssociationSet);
                csdlSemanticsAssociationSets.Add(csdlSemanticsAssociationSet1);
            }
            return(csdlSemanticsAssociationSets);
        }
コード例 #10
0
 private IEdmEntityContainer ComputeExtends()
 {
     if (this.entityContainer.Extends == null)
     {
         return(null);
     }
     else
     {
         CsdlSemanticsEntityContainer csdlSemanticsEntityContainer = this.Model.FindDeclaredEntityContainer(this.entityContainer.Extends) as CsdlSemanticsEntityContainer;
         if (csdlSemanticsEntityContainer == null)
         {
             return(new UnresolvedEntityContainer(this.entityContainer.Extends, base.Location));
         }
         else
         {
             var extends = csdlSemanticsEntityContainer.Extends;
             if (extends != null)
             {
             }
             return(csdlSemanticsEntityContainer);
         }
     }
 }
コード例 #11
0
        private IEnumerable <IEdmEntityContainerElement> ComputeElements()
        {
            List <IEdmEntityContainerElement> elements = new List <IEdmEntityContainerElement>();

            // Extends is either a CsdlSemanticsEntityContainer or BadEntityContainer.
            CsdlSemanticsEntityContainer csdlEntityContainer = this.Extends as CsdlSemanticsEntityContainer;

            if (csdlEntityContainer != null)
            {
                foreach (CsdlEntitySet entitySet in csdlEntityContainer.entityContainer.EntitySets)
                {
                    CsdlSemanticsEntitySet semanticsSet = new CsdlSemanticsEntitySet(this, entitySet);
                    elements.Add(semanticsSet);
                }

                foreach (CsdlFunctionImport functionImport in csdlEntityContainer.entityContainer.FunctionImports)
                {
                    CsdlSemanticsFunctionImport semanticsFunction = new CsdlSemanticsFunctionImport(this, functionImport);
                    elements.Add(semanticsFunction);
                }
            }

            foreach (CsdlEntitySet entitySet in this.entityContainer.EntitySets)
            {
                CsdlSemanticsEntitySet semanticsSet = new CsdlSemanticsEntitySet(this, entitySet);
                elements.Add(semanticsSet);
            }

            foreach (CsdlFunctionImport functionImport in this.entityContainer.FunctionImports)
            {
                CsdlSemanticsFunctionImport semanticsFunction = new CsdlSemanticsFunctionImport(this, functionImport);
                elements.Add(semanticsFunction);
            }

            return(elements);
        }
コード例 #12
0
		public CsdlSemanticsFunctionImport(CsdlSemanticsEntityContainer container, CsdlFunctionImport functionImport) : base(container.Context, functionImport)
		{
			this.entitySetCache = new Cache<CsdlSemanticsFunctionImport, IEdmExpression>();
			this.container = container;
			this.functionImport = functionImport;
		}
コード例 #13
0
 public CsdlSemanticsEntitySet(CsdlSemanticsEntityContainer container, CsdlEntitySet entitySet)
     : base(entitySet)
 {
     this.container = container;
     this.entitySet = entitySet;
 }
コード例 #14
0
 public CsdlSemanticsAssociationSet(CsdlSemanticsEntityContainer context, CsdlAssociationSet associationSet)
     : base(associationSet)
 {
     this.context = context;
     this.associationSet = associationSet;
 }
コード例 #15
0
		public CsdlSemanticsEntitySet(CsdlSemanticsEntityContainer container, CsdlEntitySet entitySet) : base(entitySet)
		{
			this.elementTypeCache = new Cache<CsdlSemanticsEntitySet, IEdmEntityType>();
			this.navigationTargetsCache = new Cache<CsdlSemanticsEntitySet, IEnumerable<IEdmNavigationTargetMapping>>();
			this.container = container;
			this.entitySet = entitySet;
		}
コード例 #16
0
		public CsdlSemanticsAssociationSet(CsdlSemanticsEntityContainer context, CsdlAssociationSet associationSet) : base(associationSet)
		{
			this.endsCache = new Cache<CsdlSemanticsAssociationSet, TupleInternal<CsdlSemanticsAssociationSetEnd, CsdlSemanticsAssociationSetEnd>>();
			this.elementTypeCache = new Cache<CsdlSemanticsAssociationSet, IEdmAssociation>();
			this.errorsCache = new Cache<CsdlSemanticsAssociationSet, IEnumerable<EdmError>>();
			this.context = context;
			this.associationSet = associationSet;
		}
コード例 #17
0
 public CsdlSemanticsAssociationSet(CsdlSemanticsEntityContainer context, CsdlAssociationSet associationSet)
     : base(associationSet)
 {
     this.context        = context;
     this.associationSet = associationSet;
 }
コード例 #18
0
 public CsdlSemanticsFunctionImport(CsdlSemanticsEntityContainer container, CsdlFunctionImport functionImport)
     : base(container.Context, functionImport)
 {
     this.container      = container;
     this.functionImport = functionImport;
 }
コード例 #19
0
 public CsdlSemanticsFunctionImport(CsdlSemanticsEntityContainer container, CsdlFunctionImport functionImport) : base(container.Context, functionImport)
 {
     this.entitySetCache = new Cache <CsdlSemanticsFunctionImport, IEdmExpression>();
     this.container      = container;
     this.functionImport = functionImport;
 }