/// <summary>Returns a query which can be used to retrive resource from the specified resource set.</summary> /// <param name="resourceSet">The resource set to get the quqeyr for.</param> /// <returns>An <see cref="IQueryable"/> which will be used to get resources from the specified resource set.</returns> /// <remarks>The data service will use the LINQ to build the actual query required for the resource set. It's up to this provider /// to return an <see cref="IQueryable"/> which can handle such queries. If the resource set is not recognized by the provider it should return null.</remarks> public System.Linq.IQueryable GetQueryRootForResourceSet(ResourceSet resourceSet) { return(DSPLinqQueryProvider.CreateQuery(this.dataSource.GetResourceSetEntities(resourceSet.Name).AsQueryable())); }
/// <summary>Wraps a query in a new query which will translate the DSP query into a LINQ to Objects runnable query /// and run it on the provided <paramref name="underlyingQuery"/>.</summary> /// <param name="underlyingQuery">The underlying (LINQ to Objects) query to wrap.</param> /// <returns>A new query which can handle the DSP expressions and run them on top of the <pararef name="underlyingQuery"/>.</returns> public static IQueryable CreateQuery(IQueryable underlyingQuery, ExpressionVisitor expressionVisitor) { DSPLinqQueryProvider provider = new DSPLinqQueryProvider(underlyingQuery.Provider, expressionVisitor); return(provider.CreateQuery(underlyingQuery.Expression)); }
/// <summary>Returns a query which can be used to retrive resource from the specified resource set.</summary> /// <param name="resourceSet">The resource set to get the quqeyr for.</param> /// <returns>An <see cref="IQueryable"/> which will be used to get resources from the specified resource set.</returns> /// <remarks>The data service will use the LINQ to build the actual query required for the resource set. It's up to this provider /// to return an <see cref="IQueryable"/> which can handle such queries. If the resource set is not recognized by the provider it should return null.</remarks> public virtual IQueryable GetQueryRootForResourceSet(ResourceSet resourceSet) { return(DSPLinqQueryProvider.CreateQuery(this.dataSource.GetQueryable(resourceSet.Name), this.expressionVisitor)); }
/// <summary>Internal constructor.</summary> /// <param name="queryProvider">The query provider to use for this query.</param> /// <param name="queryExpression">The query expression for this query (the DSP version).</param> internal DSPLinqQuery(DSPLinqQueryProvider queryProvider, Expression queryExpression) { this.queryProvider = queryProvider; this.queryExpression = queryExpression; }