Interoperabilità

Microsoft.Data.Sqlite usa SQLitePCLRaw per interagire con la libreria SQLite nativa. SQLitePCLRaw fornisce un'API .NET sottile sull'API SQLite nativa. SqliteConnection e SqliteDataReader fornire l'accesso agli oggetti SQLitePCLRaw sottostanti che consentono di chiamare direttamente queste API.

Nell'esempio seguente viene illustrato come chiamare sqlite3_trace per scrivere istruzioni SQL eseguite nella console:

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

E quindi, nell'esempio seguente, viene illustrato come chiamare sqlite3_stmt_status per verificare il numero di passaggi della macchina virtuale SQLite in cui è stata compilata un'istruzione SQL:

// 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}");

Gli oggetti SQLitePCLRaw espongono anche un puntatore agli oggetti nativi, permettendo di eseguire P/Invoke su ulteriori API SQLite native.