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