我正在尝试创建一个受密码保护的SQLite数据库,以便在使用Entity Framework Core的WPF应用程序中使用它。
我找到了如何从现有的SQLite数据库(数据库第一种方法)生成我的DbContext和实体,但我无法使用受密码保护的数据库。
实际上,我甚至不确定如何创建受密码保护的SQLite DB。加密数据库和受密码保护的数据库有什么区别?
答案 0 :(得分:7)
根据这个article和这个issue,使用Microsoft.Data.Sqlite程序集(由EF Core
使用)加密数据库是没有办法的(但是?)。 / p>
基于此,以下是我使用optionsBuilder
开展的工作:
在配置dbContext时,为DbConnection
提供您自己的var conn = new SQLiteConnection(@"Data Source=yourSQLite.db;");
conn.Open();
var command = conn.CreateCommand();
command.CommandText = "PRAGMA key = password;";
command.ExecuteNonQuery();
optionsBuilder.UseSqlite(conn);
:
SQLiteConnection
使用System.Data.SQLite.Core
程序集中的SqliteConnection
(可以管理加密数据库)而不是Microsoft.Data.Sqlite
中的SqliteConnection
非常重要。
根据文章,您可以使用内置sqlite3.dll
替换Microsoft.Data.Sqlite
程序集中的def custom_steps(self, test_names):
regex = 'tests\["(.*)(?::|"\]).* = (.+)(?::|;)'
for match in re.finditer(regex, test_names):
content, expected = match.groups()
if '===' in expected:
expected = expected[expected.index('===') + 4:]
else:
expected = 'true'
yield content, expected
由另一个处理加密数据库的程序(您可以找到免费的)一个就此repo)。但我没有测试过它。
Here是如何做到的!