У меня есть консольное приложение ASP. NET Core (для версии 2.2), использующее Entity Framework Core. Я пытаюсь подключиться к пустой зашифрованной базе данных SQLite, созданной с помощью DB Browser для SQLCipher. После создания соединения я пытаюсь перенести базу данных, но получаю 'SQLite Error 26: 'file is not a database'.'
Вот мой код:
var connection = new SqliteConnection(@"Data Source=Sqlite\test.db;");
connection.Open();
var command = connection.CreateCommand();
var password = "test";
command.CommandText = "SELECT quote($password);";
command.Parameters.AddWithValue("$password", password);
var quotedPassword = (string)command.ExecuteScalar();
command.CommandText = "PRAGMA key = " + quotedPassword;
command.Parameters.Clear();
var result = command.ExecuteNonQuery();
services.AddDbContext<SmartContext>(options =>
options.UseSqlite(connection));
var serviceProvider = services.BuildServiceProvider();
var context = serviceProvider.GetService<MyContext>();
Console.WriteLine("Migrating sqlite database");
context.Database.Migrate();
Я могу подключиться к база данных в DB Browser и SQLiteStudio .
Я посмотрел на этот репозиторий и у меня есть SQLitePCLRaw.bundle_sqlcipher ( 1.1.11) , SQLitePCLRaw.bundle_green (1.1.11) , Microsoft.EntityFrameworkCore.Design (2.2.6) , Microsoft.EntityFrameworkCore.Sqlite.Core (2.2.6) пакетов добавлено в мой проект.
Я просмотрел множество постов на многих форумах, но ни в одном из них не упоминается миграция с зашифрованными базами данных. Возможно, я упускаю что-то действительно очевидное, но любая помощь в преодолении этой ошибки будет принята с благодарностью, спасибо!