public IEdmEntitySet GetEntitySet() { IEdmEntitySet entitySet = OeParseNavigationSegment.GetEntitySet(ParseNavigationSegments); if (entitySet == null && ODataUri.Path.FirstSegment is EntitySetSegment entitySetSegment) { entitySet = entitySetSegment.EntitySet; } return(entitySet); }
private OeEntryFactory CreateEntryFactory(OeExpressionBuilder expressionBuilder) { IEdmEntitySet entitySet = OeParseNavigationSegment.GetEntitySet(ParseNavigationSegments); if (entitySet == null) { entitySet = OeEdmClrHelper.GetEntitySet(EdmModel, EntitySetAdapter.EntitySetName); } return(expressionBuilder.CreateEntryFactory(entitySet)); }
public OeQueryContext CreateQueryContext(ODataUri odataUri, int pageSize, bool navigationNextLink, OeMetadataLevel metadataLevel) { List <OeParseNavigationSegment> navigationSegments = null; if (odataUri.Path.LastSegment is KeySegment || odataUri.Path.LastSegment is NavigationPropertySegment) { navigationSegments = new List <OeParseNavigationSegment>(); ODataPathSegment previousSegment = null; foreach (ODataPathSegment segment in odataUri.Path) { if (segment is NavigationPropertySegment navigationSegment) { navigationSegments.Add(new OeParseNavigationSegment(navigationSegment, null)); } else if (segment is KeySegment keySegment) { IEdmEntitySet previousEntitySet; navigationSegment = null; if (previousSegment is EntitySetSegment) { var previousEntitySetSegment = previousSegment as EntitySetSegment; previousEntitySet = previousEntitySetSegment.EntitySet; } else if (previousSegment is NavigationPropertySegment) { navigationSegment = previousSegment as NavigationPropertySegment; previousEntitySet = (IEdmEntitySet)navigationSegment.NavigationSource; } else { throw new InvalidOperationException("invalid segment"); } FilterClause keyFilter = CreateFilterClause(previousEntitySet, keySegment.Keys); navigationSegments.Add(new OeParseNavigationSegment(navigationSegment, keyFilter)); } previousSegment = segment; } } var entitySetSegment = (EntitySetSegment)odataUri.Path.FirstSegment; if (pageSize > 0) { odataUri.Top = pageSize; IEdmEntitySet resultEntitySet = OeParseNavigationSegment.GetEntitySet(navigationSegments) ?? entitySetSegment.EntitySet; odataUri.OrderBy = OeSkipTokenParser.GetUniqueOrderBy(_edmModel, resultEntitySet, odataUri.OrderBy, odataUri.Apply); } Db.OeEntitySetAdapter entitySetAdapter = _edmModel.GetEntitySetAdapter(entitySetSegment.EntitySet); bool isCountSegment = odataUri.Path.LastSegment is CountSegment; return(new OeQueryContext(_edmModel, odataUri, navigationSegments, isCountSegment, pageSize, navigationNextLink, metadataLevel, entitySetAdapter)); }
private OeEntryFactory CreateEntryFactory(OeExpressionBuilder expressionBuilder, OePropertyAccessor[] skipTokenAccessors) { IEdmEntitySet?entitySet = OeParseNavigationSegment.GetEntitySet(ParseNavigationSegments); if (entitySet == null) { entitySet = OeEdmClrHelper.GetEntitySet(EdmModel, EntitySetAdapter.EntitySetName); } return(expressionBuilder.CreateEntryFactory(entitySet, skipTokenAccessors)); }
public OeQueryContext CreateQueryContext(ODataUri odataUri, int pageSize, bool navigationNextLink, OeMetadataLevel metadataLevel) { IReadOnlyList <OeParseNavigationSegment> navigationSegments = OeParseNavigationSegment.GetNavigationSegments(odataUri.Path); var entitySetSegment = (EntitySetSegment)odataUri.Path.FirstSegment; if (pageSize > 0) { odataUri.Top = pageSize; IEdmEntitySet resultEntitySet = OeParseNavigationSegment.GetEntitySet(navigationSegments) ?? entitySetSegment.EntitySet; odataUri.OrderBy = OeSkipTokenParser.GetUniqueOrderBy(_edmModel, resultEntitySet, odataUri.OrderBy, odataUri.Apply); } Db.OeEntitySetAdapter entitySetAdapter = _edmModel.GetEntitySetAdapter(entitySetSegment.EntitySet); bool isCountSegment = odataUri.Path.LastSegment is CountSegment; return(new OeQueryContext(_edmModel, odataUri, navigationSegments, isCountSegment, pageSize, navigationNextLink, metadataLevel, entitySetAdapter)); }
public IEdmEntitySet GetEntitySet() { IEdmEntitySet?entitySet = OeParseNavigationSegment.GetEntitySet(ParseNavigationSegments); if (entitySet == null) { if (ODataUri.Path.FirstSegment is EntitySetSegment entitySetSegment) { entitySet = entitySetSegment.EntitySet; } else { throw new InvalidOperationException("Cannot get EntitySet from ODataPath"); } } return(entitySet); }
private OeEntryFactory CreateEntryFactory(OeExpressionBuilder expressionBuilder) { IEdmEntitySet entitySet; if (ODataUri.Path.LastSegment is OperationSegment) { entitySet = OeOperationHelper.GetEntitySet(ODataUri.Path); Type clrEntityType = EdmModel.GetClrType(entitySet.EntityType()); OePropertyAccessor[] accessors = OePropertyAccessor.CreateFromType(clrEntityType, entitySet); return(OeEntryFactory.CreateEntryFactory(entitySet, accessors)); } entitySet = OeParseNavigationSegment.GetEntitySet(ParseNavigationSegments); if (entitySet == null) { entitySet = OeEdmClrHelper.GetEntitySet(EdmModel, EntitySetAdapter.EntitySetName); } return(expressionBuilder.CreateEntryFactory(entitySet)); }