/// <summary>
        /// Execute DataTable
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        internal static DataTable ExecuteFirstDataTable(this NpgsqlCommand command)
        {
            command.CheckNull(nameof(command));
            var ds = new DataSet();

            using var dataAdapter = new NpgsqlDataAdapter(command);
            dataAdapter.Fill(ds);

            return(ds.Tables[0]);
        }
        /// <summary>
        /// Execute DataTable
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        public static async Task <DataTable> ExecuteDataTableAsync(this NpgsqlCommand command)
        {
            command.CheckNull(nameof(command));
            var dt = new DataTable();

            using var dataAdapter = new NpgsqlDataAdapter(command);
            await Task.Run(() => dataAdapter.Fill(dt));

            return(dt);
        }
        /// <summary>
        /// Execute DataSet
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        public static DataSet ExecuteDataSet(this NpgsqlCommand command)
        {
            command.CheckNull(nameof(command));
            var ds = new DataSet();

            using var dataAdapter = new NpgsqlDataAdapter(command);
            dataAdapter.Fill(ds);

            return(ds);
        }
        /// <summary>
        /// Execute DataTable
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        public static DataTable ExecuteDataTable(this NpgsqlCommand command)
        {
            command.CheckNull(nameof(command));
            var dt = new DataTable();

            using var dataAdapter = new NpgsqlDataAdapter(command);
            dataAdapter.Fill(dt);

            return(dt);
        }
        /// <summary>
        /// Execute DataTable async
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        internal static async Task <DataTable> ExecuteFirstDataTableAsync(this NpgsqlCommand command)
        {
            command.CheckNull(nameof(command));
            var ds = new DataSet();

            using var dataAdapter = new NpgsqlDataAdapter(command);
            await Task.Run(() => dataAdapter.Fill(ds));

            return(ds.Tables[0]);
        }