コード例 #1
0
ファイル: QueryContext.cs プロジェクト: AlineGuan/odata.net
        /// <summary>
        /// Resolves the parsed URI against the data store.
        /// </summary>
        /// <param name="model">The data store model.</param>
        /// <param name="dataContext">The data access context.</param>
        /// <returns>The results of querying the data store.</returns>
        public object ResolveQuery(IEdmModel model, DataContext dataContext)
        {
            var queryProvider = new EntityFrameworkQueryProvider(dataContext);
            var testExpressionVisitor = new ODataUriToExpressionTranslator(queryProvider, model);

            // build linq expression from ODataPath and execute the expression 
            Expression boundExpression = Expression.Constant(null);
            foreach (var segment in this.QueryPath)
            {
                boundExpression = segment.TranslateWith(testExpressionVisitor);
            }

            boundExpression = Expression.Convert(boundExpression, typeof(object));
            Expression<Func<object>> lambda = Expression.Lambda<Func<object>>(boundExpression);

            Func<object> compiled = lambda.Compile();
            return compiled();
        }
コード例 #2
0
ファイル: QueryContext.cs プロジェクト: zdzislaw/odata.net
        /// <summary>
        /// Resolves the parsed URI against the data store.
        /// </summary>
        /// <param name="model">The data store model.</param>
        /// <param name="dataContext">The data access context.</param>
        /// <returns>The results of querying the data store.</returns>
        public object ResolveQuery(IEdmModel model, DataContext dataContext)
        {
            var queryProvider         = new EntityFrameworkQueryProvider(dataContext);
            var testExpressionVisitor = new ODataUriToExpressionTranslator(queryProvider, model);

            // build linq expression from ODataPath and execute the expression
            Expression boundExpression = Expression.Constant(null);

            foreach (var segment in this.QueryPath)
            {
                boundExpression = segment.TranslateWith(testExpressionVisitor);
            }

            boundExpression = Expression.Convert(boundExpression, typeof(object));
            Expression <Func <object> > lambda = Expression.Lambda <Func <object> >(boundExpression);

            Func <object> compiled = lambda.Compile();

            return(compiled());
        }