Esempio n. 1
0
        /// <summary>
        /// Handle $expand
        /// </summary>
        /// <param name="entry">Entry</param>
        /// <param name="edmParent">Parent EntitySet</param>
        /// <param name="targetVersion">Target Version</param>
        /// <param name="expandedNavigationItems">Expand Items</param>
        /// <param name="parentId">Parent Id</param>
        private void GenerateDeltaItemsFromExpand(object entry, IEdmNavigationSource edmParent, ODataVersion targetVersion, IEnumerable <ExpandedNavigationSelectItem> expandedNavigationItems, string parentId)
        {
            foreach (var navigationProperty in ((IEdmEntityType)EdmClrTypeUtils.GetEdmType(this.DataSource.Model, entry)).NavigationProperties())
            {
                var expandedNavigationItem = GetExpandedNavigationItem(expandedNavigationItems, navigationProperty.Name);

                if (expandedNavigationItem != null)
                {
                    bool isCollection = navigationProperty.Type.IsCollection();

                    ExpandSelectItemHandler expandItemHandler = new ExpandSelectItemHandler(entry);
                    expandedNavigationItem.HandleWith(expandItemHandler);
                    var propertyValue = expandItemHandler.ExpandedChildElement;

                    if (propertyValue != null)
                    {
                        IEdmNavigationSource targetSource = edmParent.FindNavigationTarget(navigationProperty);

                        if (isCollection)
                        {
                            var expandedEntities = propertyValue as IEnumerable;
                            foreach (var expandedEntity in expandedEntities)
                            {
                                GenerateDeltaItemFromEntry(expandedEntity, targetSource, targetVersion, expandedNavigationItem.SelectAndExpand, parentId, navigationProperty.Name);
                            }
                        }
                        else
                        {
                            GenerateDeltaItemFromEntry(propertyValue, targetSource, targetVersion, expandedNavigationItem.SelectAndExpand, parentId, navigationProperty.Name);
                        }
                    }

                    // Handle deleted entry and link here
                    GenerateDeltaItemsFromDeletedEntities(parentId, navigationProperty.Name);
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Handle $expand
        /// </summary>
        /// <param name="entry">Entry</param>
        /// <param name="edmParent">Parent EntitySet</param>
        /// <param name="targetVersion">Target Version</param>
        /// <param name="expandedNavigationItems">Expand Items</param>
        /// <param name="parentId">Parent Id</param>
        private void GenerateDeltaItemsFromExpand(object entry, IEdmNavigationSource edmParent, ODataVersion targetVersion, IEnumerable<ExpandedNavigationSelectItem> expandedNavigationItems, string parentId)
        {
            foreach (var navigationProperty in ((IEdmEntityType)EdmClrTypeUtils.GetEdmType(this.DataSource.Model, entry)).NavigationProperties())
            {
                var expandedNavigationItem = GetExpandedNavigationItem(expandedNavigationItems, navigationProperty.Name);

                if (expandedNavigationItem != null)
                {
                    bool isCollection = navigationProperty.Type.IsCollection();

                    ExpandSelectItemHandler expandItemHandler = new ExpandSelectItemHandler(entry);
                    expandedNavigationItem.HandleWith(expandItemHandler);
                    var propertyValue = expandItemHandler.ExpandedChildElement;

                    if (propertyValue != null)
                    {
                        IEdmNavigationSource targetSource = edmParent.FindNavigationTarget(navigationProperty);

                        if (isCollection)
                        {
                            var expandedEntities = propertyValue as IEnumerable;
                            foreach (var expandedEntity in expandedEntities)
                            {
                                GenerateDeltaItemFromEntry(expandedEntity, targetSource, targetVersion, expandedNavigationItem.SelectAndExpand, parentId, navigationProperty.Name);
                            }
                        }
                        else
                        {
                            GenerateDeltaItemFromEntry(propertyValue, targetSource, targetVersion, expandedNavigationItem.SelectAndExpand, parentId, navigationProperty.Name);
                        }
                    }

                    // Handle deleted entry and link here
                    GenerateDeltaItemsFromDeletedEntities(parentId, navigationProperty.Name);
                }
            }
        }