2015-08-12 14 views
5

Tôi đang tìm cách bật shared cache mode khi sử dụng trình bao bọc System.Data.SQLite cho SQLite.Bật chế độ bộ nhớ cache dùng chung trong System.Data.Sqlite (.net)

Tôi đã nhìn qua mã nguồn cho dự án này, và thấy rằng nó tiếp xúc trong nội bộ để lắp ráp trong UnsafeNativeMethods.cs như:

internal static extern SQLiteErrorCode sqlite3_enable_shared_cache(
    int enable); 

Thật không may, tôi không thể có được ở phương pháp này vì nó nội bộ.

Bất kỳ ai có giải pháp cho điều này?


Trả lời được đánh giá cao nhất. Cảm ơn!

FYI, khi sử dụng SQLiteConnectionStringBuilder API, cho phép bộ nhớ cache được chia sẻ bởi:

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

Trả lời

2

SQLite sử dụng báo cáo PRAGMA để thay đổi hoạt động cơ sở dữ liệu. Các câu lệnh này cụ thể đối với SQLite. Các câu lệnh PRAGMA có thể là bất cứ điều gì từ việc kích hoạt Foreign Keys, thay đổi các phiên bản lược đồ ngay lập tức để thiết lập các tùy chọn Shared-Cache (Danh sách đầy đủ các lệnh pragma có sẵn here) Với các câu lệnh Pragma Tôi biết hai cách để thực thi chúng; 1) khi chuỗi kết nối đang được khởi tạo hoặc 2) Loaded như một lệnh

1) Trong õ

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

2) lệnh riêng báo cáo pragma thể được thực hiện giống như bất kỳ lệnh cơ sở dữ liệu bình thường sqliteConnection.Open();

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

Câu hỏi khác đáng xem: SQLite SharedCache MultiThread Reads

5

Bạn có thể bật Cache được chia sẻ trong chuỗi kết nối:

var connection = new SQLiteConnection("FullUri=file:mydb.sqlite?cache=shared"); 
Các vấn đề liên quan