public static IDbCommand AddKeyValueTable <TId, TValue>(this IDbCommand command, string name, IEnumerable <KeyValuePair <TId, TValue> > list)
        {
            var statusParam = new SqlParameter(name, BuildTableValuedParameters.BuildTable(list ?? Enumerable.Empty <KeyValuePair <TId, TValue> >()))
            {
                SqlDbType = SqlDbType.Structured
            };

            command.Parameters.Add(statusParam);

            return(command);
        }
        public static IDbCommand AddIntTable(this IDbCommand command, string name, IEnumerable <int> values)
        {
            Verify.ValidString(name, nameof(name));

            var parameter = new SqlParameter(name, BuildTableValuedParameters.BuildTable(values ?? new List <int>()))
            {
                SqlDbType = SqlDbType.Structured
            };

            command.Parameters.Add(parameter);

            return(command);
        }
        public static IDbDataParameter AddParameter <TEnum>(this IDbCommand command, string name, IEnumerable <TEnum> value)
            where TEnum : struct
        {
            Verify.ValidString(name, nameof(name));

            var parameter = new SqlParameter(name, BuildTableValuedParameters.BuildTable(value))
            {
                SqlDbType = SqlDbType.Structured
            };

            command.Parameters.Add(parameter);

            return(parameter);
        }