コード例 #1
0
        protected override bool TryHandleNavigationProperty(
            IBindableModelContext context,
            IEntity targetEntity,
            ODataEntityDto oDataEntity,
            INavigationProperty navigationProperty,
            IEntitySet navigationRoot)
        {
            if (navigationProperty.IsContained())
            {
                IEnumerable <ODataEntityDto> inlineODataEntities;
                if (!oDataEntity.TryGetInlineODataEntities(navigationProperty.Name, out inlineODataEntities))
                {
                    return(false);
                }

                this.CreateInContainedNavigationProperty(context, navigationProperty, navigationRoot, targetEntity, inlineODataEntities);
                return(true);
            }

            IEnumerable <IEntity> entities;

            if (this.navigationPropertyParser.TryGetLinkedOrInlineEntities(context, oDataEntity, navigationProperty, navigationRoot, out entities))
            {
                this.navigationPropertyBinder.SetUncontainedNavigationProperty(context, targetEntity, navigationProperty, entities);
                return(true);
            }

            return(false);
        }
コード例 #2
0
        private bool TryParseAndCreateInlineEntities(
            IBindableModelContext context,
            ODataEntityDto oDataEntity,
            INavigationProperty navigationProperty,
            IEntitySet navigationRoot,
            List <IEntity> resultingEntities)
        {
            IEnumerable <ODataEntityDto> inlineODataEntities;

            if (oDataEntity.TryGetInlineODataEntities(navigationProperty.Name, out inlineODataEntities))
            {
                if (this.uncontainedEntitiesFactory == null)
                {
                    throw new InvalidOperationException("Cannot create uncontained entities. Factory hasn't been set.");
                }

                var createdEntities = this.uncontainedEntitiesFactory(context, navigationProperty, navigationRoot, inlineODataEntities);
                resultingEntities.AddRange(createdEntities);
                return(true);
            }

            return(false);
        }