我正在尝试创建一个密码保护的SQLite数据库,使用实体框架核心在WPF应用程序中使用。我知道如何从现有数据库生成DbContext和实体,但不知道如何创建受密码保护的数据库。加密数据库和受密码保护的数据库之间有什么区别?
2sbarzqh1#
我对here所描述的解决方案的流畅性感到惊喜。1.导航到github repo并向下滚动到步骤。1.在步骤1至4中安装/移除NuGet。1.修改DbContext位:
public class MyDbContext: DbContext { public MyDbContext(): base() {} protected override void OnConfiguring(DbContextOptionsBuilder builder) { SqliteConnectionStringBuilder builder = new SqliteConnectionStringBuilder(); builder.DataSource = @"myDatabase.db"; builder.Password = "myPassword"; optionsBuilder.UseSqlite(new SqliteConnection(builder.ConnectionString)); } //... and some other unrelated stuff ... }
一些注意事项:
jrcvhitl2#
根据这个article和这个issue,目前还没有办法使用Microsoft.Data.Sqlite程序集(由EF Core使用)加密数据库。在此基础上,下面是我为使其与EF Core一起工作所做的工作:
EF 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非常重要。根据这篇文章,您可以使用内置的SqliteConnection,方法是将Microsoft.Data.Sqlite程序集中附带的sqlite3.dll替换为另一个处理加密数据库的程序(您可以在这个repo上找到一个免费的程序)。Here是如何做到这一点的!
System.Data.SQLite.Core
SQLiteConnection
Microsoft.Data.Sqlite
SqliteConnection
sqlite3.dll
2条答案
按热度按时间2sbarzqh1#
我对here所描述的解决方案的流畅性感到惊喜。
1.导航到github repo并向下滚动到步骤。
1.在步骤1至4中安装/移除NuGet。
1.修改DbContext位:
一些注意事项:
jrcvhitl2#
根据这个article和这个issue,目前还没有办法使用Microsoft.Data.Sqlite程序集(由
EF Core
使用)加密数据库。在此基础上,下面是我为使其与
EF Core
一起工作所做的工作:optionsBuilder
指定您自己的DbConnection
:使用
System.Data.SQLite.Core
程序集中的SQLiteConnection
(它可以管理加密的数据库)而不是Microsoft.Data.Sqlite
中的SqliteConnection
非常重要。根据这篇文章,您可以使用内置的
SqliteConnection
,方法是将Microsoft.Data.Sqlite
程序集中附带的sqlite3.dll
替换为另一个处理加密数据库的程序(您可以在这个repo上找到一个免费的程序)。Here是如何做到这一点的!