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

问题描述 投票:0回答:3

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

我查看了该项目的源代码,发现它在 UnsafeNativeMethods.cs 中的程序集内部公开为:

internal static extern SQLiteErrorCode sqlite3_enable_shared_cache(
    int enable);

不幸的是,我无法使用这个方法,因为它是内部的。

有人有解决办法吗?


非常感谢您的回复。谢谢!

仅供参考,当使用

SQLiteConnectionStringBuilder
API 时,通过以下方式启用共享缓存:

var builder = new SQLiteConnectionStringBuilder();
...
builder.Add("cache", "shared");
c# sqlite system.data.sqlite
3个回答
6
投票

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

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

4
投票

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

1) 实例化期间

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

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

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

还有一个值得一看的问题: SQLite SharedCache 多线程读取


0
投票

另请参阅https://www.sqlite.org/sharedcache.html - 第 1.1 条建议不应再使用共享缓存,并且日志的 WAL 模式可以提供更好的结果。

© www.soinside.com 2019 - 2024. All rights reserved.