Совместимость

Microsoft.Data.Sqlite используется SQLitePCLRaw для взаимодействия с собственной библиотекой SQLite. SQLitePCLRaw предоставляет облегченный API .NET поверх нативного API SQLite. SqliteConnection и SqliteDataReader предоставляет доступ к базовым объектам SQLitePCLRaw, позволяя вызывать эти API напрямую.

В следующем примере показано, как вызвать sqlite3_trace для записи выполненных инструкций SQL на консоль:

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

В следующем примере показан вызов sqlite3_stmt_status, чтобы увидеть, сколько шагов виртуальной машины SQLite содержится в инструкции 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}");

Объекты SQLitePCLRaw даже предоставляют указатель на нативные объекты, позволяя выполнять P/Invoke для дополнительных нативных API SQLite.