Criação de batches

O SQLite não oferece suporte nativo a agrupar instruções SQL em lote em um único comando. Mas como não há nenhuma rede envolvida, isso realmente não ajudaria o desempenho de qualquer maneira. Microsoft.Data.Sqlite, no entanto, implementa o envio em lote de instruções como uma conveniência para torná-lo mais parecido com outros provedores de ADO.NET.

Ao chamar DbCommand.ExecuteReader, as instruções são executadas até a primeira que retorna resultados. A chamada DbDataReader.NextResult continua executando instruções até a próxima que retorna resultados ou até chegar ao final do lote. Chamar DbDataReader.Dispose ou Close executa quaisquer instruções restantes que não tenham sido consumidas por NextResult(). Se não eliminar um leitor de dados, o finalizador tentará executar as instruções restantes, mas quaisquer erros que encontrar serão ignorados. Por isso, é importante descartar DbDataReader objetos ao usar lotes.

// Batch two SELECT statements into a single command
var command = connection.CreateCommand();
command.CommandText =
@"
    SELECT *
    FROM blog;

    SELECT *
    FROM post;
";
using (var reader = command.ExecuteReader())
{
    // Read the first result set
    while (reader.Read())
    {
        Console.WriteLine($"Blog {reader["id"]}: {reader["name"]}");
    }

    // Read the second result set
    reader.NextResult();
    while (reader.Read())
    {
        Console.WriteLine($"Post {reader["id"]}: {reader["title"]}");
    }
}

Ver também