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