private void PopulateNavigations(EntitySetDataRow row, QueryStructuralValue instance)
        {
            var                 entityInstance = instance as QueryEntityValue;
            EntitySetData       entitySetData  = row.Parent;
            EntityContainerData containerData  = entitySetData.Parent;

            foreach (AssociationSet associationSet in containerData.EntityContainer.AssociationSets)
            {
                foreach (var fromSetEnd in associationSet.Ends.Where(e => e.EntitySet == entitySetData.EntitySet))
                {
                    var fromEntityType = fromSetEnd.AssociationEnd.EntityType;
                    if (!row.EntityType.IsKindOf(fromEntityType))
                    {
                        continue;
                    }

                    var toSetEnd = associationSet.GetOtherEnd(fromSetEnd);

                    this.PopulateNavigateResult(row, entityInstance, associationSet, fromSetEnd, toSetEnd);

                    // if Navigation property exists, populate it as well
                    var navProp = row.EntityType.AllNavigationProperties.SingleOrDefault(p => p.Association == associationSet.AssociationType &&
                                                                                         p.ToAssociationEnd == toSetEnd.AssociationEnd);
                    if (navProp != null)
                    {
                        instance.SetValue(navProp.Name, entityInstance.GetNavigateResult(navProp.Association, navProp.ToAssociationEnd));
                    }
                }
            }
        }
        private void PopulateObjectInstances(EntitySetData entitySetData)
        {
            foreach (var row in entitySetData.Rows)
            {
                var instance = this.rowInstances[entitySetData.EntitySet.Name][row.Key];

                this.PopulateInstanceFromRow(row, instance);
            }
        }
        /// <summary>
        /// Initializes query collection values.
        /// </summary>
        /// <param name="entitySetData">entity set data</param>
        /// <returns>initial query collection value</returns>
        protected virtual QueryCollectionValue BuildStubEntities(EntitySetData entitySetData)
        {
            string entitySetName = entitySetData.EntitySet.Name;

            var elements  = new List <QueryStructuralValue>();
            var setRowMap = new Dictionary <EntityDataKey, QueryStructuralValue>();

            foreach (EntitySetDataRow row in entitySetData.Rows)
            {
                var queryType = this.GetQueryType(entitySetData.EntitySet.Name, row.EntityType);
                var instance  = this.InitializeEntityValue(queryType);

                setRowMap[row.Key] = instance;
                elements.Add(instance);
            }

            this.rowInstances[entitySetName] = setRowMap;

            var rootElementType = this.GetQueryType(entitySetName, entitySetData.EntitySet.EntityType);

            return(QueryCollectionValue.Create(rootElementType, elements.ToArray()));
        }
 /// <summary>
 /// Initializes a new instance of the EntitySetDataRowWithStreams class
 /// </summary>
 /// <param name="parent">The parent of the row</param>
 /// <param name="entityType">The entity type of the row</param>
 public EntitySetDataRowWithStreams(EntitySetData parent, EntityType entityType)
     : base(parent, entityType)
 {
     this.Streams = new List <StreamData>();
 }
Beispiel #5
0
        /// <summary>
        /// Initializes query collection values, setting default IsSorted value to true. Therefore we enable ordering verfication by default.
        /// </summary>
        /// <param name="entitySetData">entity set data</param>
        /// <returns>initial query collection value</returns>
        protected override QueryCollectionValue BuildStubEntities(EntitySetData entitySetData)
        {
            var collection = base.BuildStubEntities(entitySetData);

            return(QueryCollectionValue.Create(collection.Type.ElementType, collection.Elements, true));
        }