Interoperabilidad

Microsoft.Data.Sqlite usa SQLitePCLRaw para interactuar con la biblioteca nativa de SQLite. SQLitePCLRaw proporciona una API de .NET fina a través de la API de SQLite nativa. SqliteConnection y SqliteDataReader proporcionan acceso a los objetos SQLitePCLRaw subyacentes que le permiten llamar directamente a estas API.

En el ejemplo siguiente se muestra cómo llamar a sqlite3_trace para escribir instrucciones SQL ejecutadas en la consola:

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

Y en el ejemplo siguiente se muestra la llamada a sqlite3_stmt_status para ver en cuántos pasos de máquina virtual de SQLite se ha compilado una instrucción 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}");

Los objetos SQLitePCLRaw incluso exponen un puntero a los objetos nativos que permiten invocar otras API de SQLite nativas.