/// <summary>
        /// Executes the strongly-typed query represented by a specified expression tree.
        /// </summary>
        /// <returns>
        /// The value that results from executing the specified query.
        /// </returns>
        /// <param name="expression">An expression tree that represents a LINQ query.</param><typeparam name="TResult">The type of the value that results from executing the query.</typeparam>
        public override TResult Execute <TResult>(Expression expression)
        {
            var queryState          = new EntryQueryState(Context, typeof(TResult), expression);
            var directoryExpression = queryState.GetSingleResultExpression();

            return(Context.QueryExecutor.Execute <TResult>(directoryExpression));
        }
        /// <summary>
        /// Executes the query represented by a specified expression tree.
        /// </summary>
        /// <returns>
        /// The value that results from executing the specified query.
        /// </returns>
        /// <param name="expression">An expression tree that represents a LINQ query.</param>
        public override object Execute(Expression expression)
        {
            var queryState          = new EntryQueryState(Context, expression.Type, expression);
            var directoryExpression = queryState.GetSingleResultExpression();

            return(Context.QueryExecutor.Execute(directoryExpression));
        }