在System.Data.Sqlite(.net)中启用共享缓存模式

Aar*_*don 7 c# sqlite system.data.sqlite

我正在寻找一种在使用SQLite 的System.Data.SQLite包装器时启用共享缓存模式的方法.

我查看了这个项目的源代码,看到它在UnsafeNativeMethods.cs内部暴露给程序集:

internal static extern SQLiteErrorCode sqlite3_enable_shared_cache(
    int enable);
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不能使用这种方法,因为它是内部的.

有人有解决方案吗?


回复最受赞赏.谢谢!

仅供参考,在使用SQLiteConnectionStringBuilderAPI时,通过以下方式启用共享缓存:

var builder = new SQLiteConnectionStringBuilder();
...
builder.Add("cache", "shared");
Run Code Online (Sandbox Code Playgroud)

小智 6

您可以在连接字符串中启用共享缓存:

var connection = new SQLiteConnection("FullUri=file:mydb.sqlite?cache=shared");
Run Code Online (Sandbox Code Playgroud)


Hel*_* 88 4

SQLite使用PRAGMA语句来修改数据库操作。这些语句特定于 SQLite。PRAGMA 语句可以是任何内容,从启用外键、更改模式版本到设置共享缓存选项(此处提供了 pragma 命令的完整列表)对于 Pragma 语句,我知道有两种执行它们的方法;1) 当连接字符串被实例化时或 2) 作为命令加载

1) 实例化期间

new SQLiteConnection("Data Source=c:\mydb.db;Version=3;cache=shared");
Run Code Online (Sandbox Code Playgroud)

2) 单独的命令编译指示语句可以像任何普通数据库命令 sqliteConnection.Open() 一样执行;

var cmd = new SQLiteCommand("PRAGMA cache=shared",sqliteConnection);
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

另一个值得一看的问题: SQLite SharedCache MultiThread Reads