更新时间:2023-11-07 21:36:28
根据这个答案 保护 EntityFramework 核心应用程序使用的 SQLite 数据库
EF Core 使用 Microsoft.Data.Sqlite,目前不支持开箱即用的加密.看https://github.com/aspnet/Microsoft.Data.Sqlite/issues/184.你可以使用 SQLite 扩展自己添加加密.
在提供的 GitHub 链接上还有其他链接到
I use SQLite with Entity Framework.
I create the DB with following code:
class MyContext : DbContext
{
// DbSets, OnModelCreating(), etc.
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=c:\test.db");
}
}
//this is in my test method
using (var db = new MyContext())
{
db.Database.EnsureCreated();
}
The above code works. The DB gets created. But I want to encrypt the DB by providing password in connection string:
optionsBuilder.UseSqlite("Data Source=c:\test.db;Password=mypassword");
In this case, after EnsureCreated
is called, I get exception
An unhandled exception of type 'System.ArgumentException' occurred in System.Data.dll Additional information: Keyword not supported: 'password'.
What is wrong with using password? How can I encrypt that SQLite database?
According to this answer Protect SQLite database used by EntityFramework Core Application
EF Core uses Microsoft.Data.Sqlite, which does not currently support encryption out-of-box. See https://github.com/aspnet/Microsoft.Data.Sqlite/issues/184. You could add encryption yourself using SQLite extensions.
At the GitHub link provided there were other links to an alternative at