相互運用性

Microsoft.Data.Sqlite では、 SQLitePCLRaw を使用してネイティブ SQLite ライブラリと対話します。 SQLitePCLRaw はネイティブ SQLite API に対して薄い .NET API を提供します。 SqliteConnectionSqliteDataReader 基になる 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 を呼び出して、SQL ステートメントでコンパイルされた SQLite 仮想マシンのステップの数を確認します。

// 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 オブジェクトではネイティブ オブジェクトへのポインターも公開され、追加のネイティブ SQLite API を P/Invoke できます。