public async Task <long> CountAsync(string tableName, string schemaName, Action <DynamicSelectStatement> expression)
        {
            DynamicSelectStatement select = new DynamicSelectStatement(DialectProvider);

            expression(select.From(tableName, schemaName));

            return(await this.ExecuteScalarAsync <long>(DialectProvider.ToCountStatement(select.Statement, CommandFlags.None)));
        }
        public async Task <IEnumerable <dynamic> > SelectAsync(string tableName, string schemaName, Action <DynamicSelectStatement> selectStatement, CommandFlags flags = CommandFlags.Buffered)
        {
            DynamicSelectStatement statement = new DynamicSelectStatement(DialectProvider);

            selectStatement(statement.From(tableName, schemaName));

            CommandDefinition cmd = DialectProvider.ToSelectStatement(statement.Statement, flags);

            return(await this.QueryAsync(cmd.CommandText, cmd.Parameters, cmd.Transaction, cmd.CommandTimeout, cmd.CommandType));
        }