Esempio n. 1
0
 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>()
     };
 }
Esempio n. 2
0
        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));
        }