internal EdgeQueryBuilder( IGraphQueryBuilder root, Direction direction, string key, int times = 1, int vertexMatches = 65535, bool yieldEdge = true, bool yieldVertex = true, Func <FilterDefinitionBuilder <TEdge>, FilterDefinition <TEdge> > edgeFilterExpression = null, Func <FilterDefinitionBuilder <TVertex>, FilterDefinition <TVertex> > vertexFilterExpression = null ) { this.root = root; Query = new EdgeQuery <TEdge, TVertex>() { key = key, edge = typeof(TEdge).Name, type = typeof(TVertex).Name, edgeFilter = edgeFilterExpression?.Invoke(Builders <TEdge> .Filter).RenderToBsonDocument(), vertexFilter = vertexFilterExpression?.Invoke(Builders <TVertex> .Filter).RenderToBsonDocument(), direction = direction, yieldEdge = yieldEdge, yieldVertex = yieldVertex, times = times, vertexMatches = vertexMatches, withs = new Dictionary <string, EdgeQuery>() }; }
public static IGraphQueryBuilder <TEntity, TProperty> ThenInclude <TEntity, TPreviousProperty, TProperty>( this IGraphQueryBuilder <TEntity, IEnumerable <TPreviousProperty> > builder, Expression <Func <TPreviousProperty, TProperty> > field) where TEntity : class { var paths = ExpressionUtils.GetFieldsPath(field); var lastNode = BuildTreeForNode(builder.LastNode, paths.FirstOrDefault(), paths); return(new GraphGraphQueryBuilder <TEntity, TProperty>(builder.Node, lastNode)); }