2015-08-12 13 views
5

Poszukuję sposobu włączenia shared cache mode podczas korzystania z opakowania System.Data.SQLite dla SQLite.Włączanie trybu współużytkowanej pamięci podręcznej w System.Data.Sqlite (.net)

Szukałem poprzez kod źródłowy dla tego projektu, a zobaczysz, że jest narażony wewnętrznie do montażu w UnsafeNativeMethods.cs jak:

internal static extern SQLiteErrorCode sqlite3_enable_shared_cache(
    int enable); 

Niestety, nie mogę w tej metody, ponieważ jest to wewnętrzny.

Ktoś ma rozwiązanie tego problemu?


Odpowiedzi były najbardziej doceniane. Dzięki!

FYI, podczas korzystania z SQLiteConnectionStringBuilder API, umożliwia wspólne cache przez:

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

Odpowiedz

2

SQLite używa stwierdzenia Pragma aby zmodyfikować operacje na bazach danych. Te instrukcje są specyficzne dla SQLite. Instrukcje PRAGMA mogą być dowolne, od włączania kluczy obcych, poprzez zmianę wersji schematu aż po ustawianie opcji współużytkowanej pamięci podręcznej (pełna lista komend pragma jest dostępna: here) Z oświadczeniami Pragma wiem o dwóch sposobach ich wykonania; 1) gdy ciąg połączenia jest instancja lub 2) Loaded jako polecenie

1) podczas konkretyzacji

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

2) oddzielnych poleceń oświadczenia Pragma może być wykonany jak każdy normalny komendy bazy sqliteConnection.Open();

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

Inną kwestią warte obejrzenia: SQLite SharedCache MultiThread Reads

5

Można włączyć współdzielonej pamięci podręcznej w ciągu połączenia:

var connection = new SQLiteConnection("FullUri=file:mydb.sqlite?cache=shared"); 
Powiązane problemy