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

fha*_*eau 6 c# sqlite entity-framework-core

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

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

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

fha*_*eau 10

根据这篇文章和这个问题,没有办法(还是?)使用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);
    
    Run Code Online (Sandbox Code Playgroud)

从程序集中使用SQLiteConnection(可以管理加密数据库)非常重要,System.Data.SQLite.Core而不是SqliteConnectionMicrosoft.Data.Sqlite.


根据这篇文章,你很可能使用了内置于SqliteConnection通过更换sqlite3.dll附带的内Microsoft.Data.Sqlite由另外一个,处理加密数据库组件(你可以找到在这个免费的回购).但我没有测试过它.

是怎么做的!