このarticleとこのissueによれば、Microsoft.Data.Sqliteアセンブリ(EF Core
で使用)を使用してデータベースを暗号化する方法はありません。これに基づき
が、ここで私はそれが
EF Core
での作業を取得するために行われてきたものである:あなたのdbContextを設定している間
- プロジェクト
にSystem.Data.SQLite.Coreパッケージを追加、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.Sqlite
)ではなくSQLiteConnection
(暗号化されたデータベースを管理できる)を使用するようにしてください。
記事によると、あなたはおそらく暗号化されたデータベースを扱う別の1(あなたがこのrepoの空きものを見つけることができます)によってMicrosoft.Data.Sqlite
アセンブリ内に出荷さsqlite3.dll
を交換することによりSqliteConnection
に建てを使用できます。しかし、私はそれをテストしなかった。
Hereこれを行う方法です!
あなたは 'dbCon.SetPassword(myLitePW)'を使ってDBを暗号化します。その後、接続文字列でPWを使います: 'Data Source = c:\ mydb.db; Version = 3; Password = myLitePW;' – Plutonix
これはEF6(System.Data.SQLiteパッケージ内)で動作します。しかし、EFコア(Microsoft.Data.SQLiteパッケージ内)では、そうする方法が見つからない...(Microsoft.Data.SQLiteのSQLiteConnectionにSetPasswordメソッドがない) – fharreau