密码保护的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.Sqlite
的SqliteConnection
非常重要。
根据这篇文章,你可以使用内置的SqliteConnection
来替换另一个处理加密数据库的Microsoft.Data.Sqlite
程序SqliteConnection
的sqlite3.dll
(你可以在这个repo上找到一个免费的)。 但我没有测试过它。
这是怎么做到的!