/// <summary>Creates a <typeparamref name="T"/> entity from the <see cref="System.Data.SqlClient.SqlDataReader"/>.</summary>
        /// <param name="reader">The reader object.</param>
        /// <param name="builder">Object used to build and item from a <see cref="System.Data.SqlClient.SqlDataReader"/>.</param>
        /// <returns>Returns a <typeparamref name="T"/> object.</returns>
        public static T BuildItem <T>(this SqlDataReader reader, DesignStreaks.Presentation.IBuilder <T, SqlDataReader> builder)
            where T : class
        {
            if (!reader.HasRows)
            {
                return((T)Activator.CreateInstance(typeof(T), new object[] { }));
            }

            T result = builder.Build(reader);

            return(result);
        }
        /// <summary>Create a list of <typeparamref name="T"/> entities from the <see cref="System.Data.SqlClient.SqlDataReader"/>.</summary>
        /// <param name="reader">The reader object.</param>
        /// <param name="builder">Object used to build and item from a <see cref="System.Data.SqlClient.SqlDataReader"/>.</param>
        /// <returns>Returns a list of <typeparamref name="T"/> objects.</returns>
        public static List <T> BuildList <T>(this SqlDataReader reader, DesignStreaks.Presentation.IBuilder <T, SqlDataReader> builder)
            where T : class
        {
            List <T> result = new List <T>();

            if (!reader.HasRows)
            {
                return(result);
            }

            do
            {
                T item = builder.Build(reader);
                result.Add(item);
            } while (reader.Read());

            return(result);
        }