密码保护的SQLite与实体框架核心

时间:2016-10-06 19:07:27

标签: c# sqlite entity-framework-core

我正在尝试创建一个受密码保护的SQLite数据库,以便在使用Entity Framework Core的WPF应用程序中使用它。

我找到了如何从现有的SQLite数据库(数据库第一种方法)生成我的DbContext和实体,但我无法使用受密码保护的数据库。

实际上,我甚至不确定如何创建受密码保护的SQLite DB。加密数据库和受密码保护的数据库有什么区别?

1 个答案:

答案 0 :(得分:7)

根据这个article和这个issue,使用Microsoft.Data.Sqlite程序集(由EF Core使用)加密数据库是没有办法的(但是?)。 / p>

基于此,以下是我使用optionsBuilder开展的工作:

  • System.Data.SQLite.Core包添加到项目
  • 在配置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是如何做到的!