internal static Task<T> SingleWhereAsync<T>(this IDbCommand dbCmd, string name, object value, CancellationToken token)
        {
            if (!dbCmd.CanReuseParam<T>(name))
                dbCmd.SetFilter<T>(name, value);

            ((IDbDataParameter)dbCmd.Parameters[0]).Value = value;

            return dbCmd.ConvertToAsync<T>(null, token);
        }
        internal static Task<T> SingleByIdAsync<T>(this IDbCommand dbCmd, object value, CancellationToken token)
        {
            if (!dbCmd.CanReuseParam<T>(ModelDefinition<T>.PrimaryKeyName))
                dbCmd.SetFilter<T>(ModelDefinition<T>.PrimaryKeyName, value);

            ((IDbDataParameter)dbCmd.Parameters[0]).Value = value;

            return dbCmd.ConvertToAsync<T>(null, token);
        }
        internal static List <T> Where <T>(this IDbCommand dbCmd, string name, object value)
        {
            if (!dbCmd.CanReuseParam <T>(name))
            {
                SetFilter <T>(dbCmd, name, value);
            }

            ((IDbDataParameter)dbCmd.Parameters[0]).Value = value;

            return(dbCmd.ConvertToList <T>());
        }
        internal static T SingleById <T>(this IDbCommand dbCmd, object value)
        {
            if (!dbCmd.CanReuseParam <T>(ModelDefinition <T> .PrimaryKeyName))
            {
                SetFilter <T>(dbCmd, ModelDefinition <T> .PrimaryKeyName, value);
            }

            ((IDbDataParameter)dbCmd.Parameters[0]).Value = value;

            return(dbCmd.ConvertTo <T>());
        }