В настоящее время я пытаюсь зашифровать базу данных SQLite с официальным расширением SEE при использовании инфраструктуры сущностей Microsoft.
Я могу зашифровать базу данных при использовании ADO.NET. Однако возникает ошибка «Вы указали пароль в строке подключения, но собственная библиотека SQLite «e_sqlite3» не поддерживает шифрование» при использовании фреймворка сущностей.
Используемые пакеты NuGet:
[Microsoft.EntityFrameWork.Core Microsoft.EntityFrameWork.Core.SQLite SQLite.Encryption.Extension System.Data.SQLite.Core]
Подскажите, пожалуйста, как исправить эту ошибку с официальным расширением SEE?
CustomDBContext.cs:
private readonly bool _created = false;
public CustomDbContext(DBContextOptions<CustomDbContext> options):base(options){
if(!_created)
{
_created = true;
Database.EnsureCreated();
}
}
public DbSet<SampleEntity> SampleEntities {get; set;}
Программа.cs:
static void Main(string[] args)
{
var services = new ServiceCollection();
ConfigureService(services);
using ServiceProvider provider = services.BuildServiceProvider();
provider.GetService<ICustomDBContext>();
}
private static void ConfigureServices(ServiceCollection services)
{
string password = Convert.ToHexString(Encoding.Default.GetBytes("aes256:test");
SQLiteCommand.Execute("PRAGMA activate_extensions='see-7bb07b8d471d642e'", SQLiteExecuteType.NonQuery,@"Data Source=c:\users\test.db");
SQLiteConnectionStringBuilder connectionStringBuilder = new(){
ConnectionString = @"Data Source=c:\users\test.db;Password="+password};
SQLiteConnection conn = new(connectionStringBuilder.ConnectionString);
connection.Open();
connection.ChangePassword(password);
services.AddDbContext<CustomDBContext>(options => options.UseSqlite(connection));
}
System.Data.Sqlite
не является библиотекой Microsoft, несмотря на ее название. - person Panagiotis Kanavos   schedule 21.07.2021UseSqlite
? ПакетMicrosoft.EntityFrameWork.Core.SQLite
используетSQLitePCLRaw.bundle_e_sqlite3
. Таким образом, вы в конечном итоге настраиваете EF Core для использования стандартного поставщика вместо SEE. - person Panagiotis Kanavos   schedule 21.07.2021Microsoft.EntityFrameWork.Core.SQLite
— это просто пакетMicrosoft.EntityFrameWork.Core.SQLite.Core
и файлы, поставляемые пакетом SQLite. Возможно, вы сможете использовать толькоMicrosoft.EntityFrameWork.Core.SQLite.Core
, если убедитесь, что ваши собственные файлы скопированы в правильную папку. - person Panagiotis Kanavos   schedule 21.07.2021Microsoft.EntityFrameWork.Core.SQLite.Core
вместоMicrosoft.EntityFrameWork.Core.SQLite
. ЕслиSQLite.Encryption.Extension
иSystem.Data.SQLite.Core
развертывают библиотеки DLL с теми же именами и в тех же местах, что иe_sqlite3
, вы можете использовать SQLite без дополнительного кода. В противном случае проверьте Использовать динамический провайдер в документах Microsoft. Вы можете использоватьMicrosoft.Data.Sqlite
при загрузке SEE - person Panagiotis Kanavos   schedule 21.07.2021