密碼保護的SQLite與實體框架核心

c# entity-framework-core sqlite

我正在嘗試創建一個受密碼保護的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上找到一個免費的)。但我沒有測試過它。

是怎麼做到的!



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因