密码保护的SQLite与entity framework核心

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

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

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

根据这篇文章和这个问题 ,没有办法(还是?)使用Microsoft.Data.Sqlite程序集(由EF Core使用)加密数据库。

基于此,以下是我为使其与EF Core一起工作所做的工作:

  • 将System.Data.SQLite.Core包添加到项目中
  • 在配置dbContext时,为optionsBuilder您自己的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); 

System.Data.SQLite.Core程序集使用SQLiteConnection (可以管理加密数据库)而不是Microsoft.Data.SqliteSqliteConnection非常重要。


根据这篇文章,你可以使用内置的SqliteConnection来替换另一个处理加密数据库的Microsoft.Data.Sqlite程序SqliteConnectionsqlite3.dll (你可以在这个repo上找到一个免费的)。 但我没有测试过它。

这是怎么做到的!