2015-08-12 23 views
5

Sto cercando un modo per abilitare shared cache mode quando si utilizza il wrapper System.Data.SQLite per SQLite.Abilita la modalità cache condivisa in System.Data.Sqlite (.net)

Ho guardato attraverso il codice sorgente per questo progetto, e vedo che è esposto internamente per l'assemblea in UnsafeNativeMethods.cs come:

internal static extern SQLiteErrorCode sqlite3_enable_shared_cache(
    int enable); 

Purtroppo, non posso arrivare a questo metodo dal momento che è interno.

Qualcuno ha una soluzione per questo?


Le risposte sono state più apprezzate. Grazie!

Cordiali saluti, quando si utilizza il SQLiteConnectionStringBuilder API, abilitare la cache condivisa da:

var builder = new SQLiteConnectionStringBuilder(); 
... 
builder.Add("cache", "shared"); 

risposta

2

SQLite utilizza istruzioni PRAGMA per modificare il operazioni di database. Queste istruzioni sono specifiche per SQLite. Le istruzioni PRAGMA possono essere qualsiasi cosa dall'abilitazione di chiavi esterne, dalla modifica delle versioni dello schema fino all'impostazione delle opzioni della cache condivisa (è disponibile un elenco completo di comandi pragma here) Con le istruzioni Pragma sono a conoscenza di due modi per eseguirle; 1) quando la stringa di connessione viene istanziata o 2) caricato come comando

1) Durante istanze

new SQLiteConnection("Data Source=c:\mydb.db;Version=3;cache=shared"); 

2) Comando Separate istruzioni Pragma possono essere eseguite come qualsiasi comando normale database sqliteConnection.Open();

var cmd = new SQLiteCommand("PRAGMA cache=shared",sqliteConnection); 
cmd.ExecuteNonQuery(); 

Un'altra domanda merita una visita: SQLite SharedCache MultiThread Reads

5

È possibile attivare la cache condivisa nella stringa di connessione:

var connection = new SQLiteConnection("FullUri=file:mydb.sqlite?cache=shared"); 
Problemi correlati