Processamento em Lotes

O SQLite não dá suporte nativo ao envio em lote de instruções SQL em um único comando. Mas como não há nenhuma rede envolvida, isso realmente não ajudaria o desempenho de qualquer maneira. No entanto, o Microsoft.Data.Sqlite implementa o envio em lote de instruções como uma conveniência para que ele se comporte mais como outros provedores de ADO.NET.

Ao chamar DbCommand.ExecuteReader, as instruções são executadas até a primeira que retorna os resultados. A chamada DbDataReader.NextResult continua executando instruções até a próxima que retorna resultados ou até chegar ao fim do lote. Chamar DbDataReader.Dispose ou Close executa todas as instruções restantes que não tenham sido consumidas por NextResult(). Se você não dispuser de um leitor de dados, o finalizador tentará executar as instruções restantes, mas ignorará quaisquer erros que encontrar. 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"]}");
    }
}

Consulte também