/// <summary>
        /// Includes the property as structured data type (Table Valued Parameter).
        /// </summary>
        /// <typeparam name="TFilter">The type of the filter.</typeparam>
        /// <param name="commandExpression">The CommandBuilder expression.</param>
        /// <param name="propertyName">Name of the property.</param>
        /// <param name="typeName">Name of the type.</param>
        /// <returns>ICommandExpression&lt;TFilter&gt;.</returns>
        public static ICommandExpression <TFilter> IncludePropertyAsStructured <TFilter>(
            this ICommandExpression <TFilter> commandExpression, string propertyName, string typeName)
        {
            commandExpression.IncludeProperty(propertyName,
                                              parameter => parameter.MakeTableValuedParameter(propertyName, typeName));

            return(commandExpression);
        }
        /// <summary>
        /// Includes the property as structured data type (Table Valued Parameter).
        /// </summary>
        /// <typeparam name="TFilter">The type of the filter.</typeparam>
        /// <param name="commandExpression">The CommandBuilder expression.</param>
        /// <param name="propertyName">Name of the property.</param>
        /// <param name="typeName">Name of the type.</param>
        /// <param name="parameterOptions">The parameter options.</param>
        /// <returns>ICommandExpression&lt;TFilter&gt;.</returns>
        public static ICommandExpression <TFilter> IncludePropertyAsStructured <TFilter>(
            this ICommandExpression <TFilter> commandExpression, string propertyName, string typeName, Action <DbParameter> parameterOptions)
        {
            if (parameterOptions != null)
            {
                commandExpression.IncludeProperty(propertyName,
                                                  parameterOptions.AppendToAction(parameter => parameter.MakeTableValuedParameter(propertyName, typeName)));
            }
            else
            {
                commandExpression.IncludeProperty(propertyName,
                                                  parameter => parameter.MakeTableValuedParameter(propertyName, typeName));
            }

            return(commandExpression);
        }
 /// <summary>
 /// Includes the property as structured data type (Table Valued Parameter).
 /// </summary>
 /// <typeparam name="TFilter">The type of the filter.</typeparam>
 /// <param name="commandExpression">The CommandBuilder expression.</param>
 /// <param name="property">The property.</param>
 /// <param name="typeName">Name of the type.</param>
 /// <param name="parameterOptions">The parameter options.</param>
 /// <returns>ICommandExpression&lt;TFilter&gt;.</returns>
 public static ICommandExpression <TFilter> IncludePropertyAsStructured <TFilter>(
     this ICommandExpression <TFilter> commandExpression,
     Expression <Func <TFilter, object> > property, string typeName, Action <DbParameter> parameterOptions)
 {
     return(IncludePropertyAsStructured(commandExpression, property.Name, typeName, parameterOptions));
 }