/// <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; } }
/// <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; } }