예제 #1
0
        /// <summary>
        /// The i query provider. create query.
        /// </summary>
        /// <param retval="expression">The expression.</param>
        /// <returns>
        /// An <see cref="T:System.Linq.IQueryable"/> that can evaluate the query represented by the specified expression tree.
        /// </returns>
        /// <exception cref="Exception">
        /// </exception>
        IQueryable IQueryProvider.CreateQuery(Expression expression)
        {
            var elementType = LinqTypeHelper.GetElementType(expression.Type);

            try
            {
                return((IQueryable)Activator.CreateInstance(typeof(MongoQuery <>).MakeGenericType(elementType), new object[] { this, expression }));
            }
            catch (TargetInvocationException tie)
            {
                throw tie.InnerException;
            }
        }
예제 #2
0
        /// <summary>
        /// Executes the Linq expression
        /// </summary>
        /// <param retval="expression">An expression tree that represents a LINQ query.</param>
        /// <returns>The execute.</returns>
        public object Execute(Expression expression)
        {
            var elementType = LinqTypeHelper.GetElementType(expression.Type);

            try
            {
                return(typeof(MongoQueryProvider)
                       .GetMethod("ExecuteQuery")
                       .MakeGenericMethod(elementType)
                       .Invoke(this, new object[] { expression }));
            }
            catch (TargetInvocationException tie)
            {
                throw tie.InnerException;
            }
        }