Interoperabilidade

Microsoft.Data.Sqlite usa SQLitePCLRaw para interagir com a biblioteca SQLite nativa. SQLitePCLRaw fornece uma API .NET fina sobre a API nativa do SQLite. SqliteConnection e SqliteDataReader fornecer acesso aos objetos SQLitePCLRaw subjacentes, permitindo que você chame essas APIs diretamente.

O exemplo a seguir mostra como chamar sqlite3_trace para gravar instruções SQL executadas no console:

// Get the underlying sqlite3 object
var db = connection.Handle;
sqlite3_trace(
    db,
    (_, statement) => Console.WriteLine(statement),
    null);

E o exemplo a seguir mostra como chamar sqlite3_stmt_status para verificar em quantas etapas da máquina virtual SQLite uma instrução SQL foi compilada:

// Get the underlying sqlite3_stmt object
var stmt = reader.Handle;
var steps = sqlite3_stmt_status(
    stmt,
    SQLITE_STMTSTATUS_VM_STEP,
    resetFlg: 0);
Console.WriteLine($"VM operations: {steps}");

Os objetos SQLitePCLRaw expõem até mesmo um ponteiro para os objetos nativos, permitindo que você P/Invoque APIs nativas do SQLite adicionais.