Файл SQLite: 26 не является ошибкой базы данных в базе данных SQLite SEE 3.30.1 с Micorosft.EntityFrameworkCore.Sqlite - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть приложение C# UWP с незашифрованной базой данных SQLite (с SEE) в моем приложении. Во время запуска я копирую эту базу данных в пользовательскую папку, зашифровываю ее и использую для хранения некоторой информации, специфичной для приложения c.

Работает без проблем, когда у меня был SQLite SEE v3.30.1 с Microsoft.EntityFrameworkCore.Sqlite v2.2.0 и SQLitePCLRaw.lib.e_sqlite3.v140 v1.1.14 (заменил существующий e_sqlite3.dll на один Я создал на основе SEE)

Так как я был на версии EF, я решил обновить ее до последней (3.1.1), и поскольку этот пакет имел внутреннюю зависимость от SQLitePCLRaw, я удалил SQLitePCLRaw Пакет .lib.e_sqlite3.v140, который я использовал и основанный на документации SQLitePCLRaw , внес в мои настройки следующие дополнительные изменения:

  1. Я установил пакет SQLitePCLRaw.bundle_e_sqlite3
  2. Заменил e_sqlite3.dll в SQlitePCLRaw.lib.e_sqlite3 на тот, который у меня есть в SEE
  3. Обновлен лог c, чтобы предоставить полный абсолютный путь для моей базы данных
  4. Вызвал SQLitePCL.Batteries_V2.Init () как часть запуска

Теперь я вижу, что копия работает, и шифрование меня Торы выполняются без проблем, но я получаю сообщение об ошибке

"SQLite 26: Файл не является базой данных"

в разделе, из которого он пытается прочитать файл базы данных. И эта же ошибка возникает при попытке открыть базу данных из интерфейса командной строки SQLite или любого другого программного обеспечения для просмотра баз данных, например SQLiteManager.

После долгих исследований я заметил, что SQLitePCLRaw поддерживает до v3.28.0 и затем я понизил свой двоичный файл e_sqlite3 SEE до той же версии 3.28.0, но проблема остается той же.

Я не могу понять, чего мне не хватает. Таким образом, любые рекомендации действительно приветствуются.

РЕДАКТИРОВАТЬ:

Я проверил, что шифрование и дешифрование работает нормально с командной строкой SEE, но не удается, только когда интегрированы в мой приложение, использующее EFCore. Кроме того, logi c работает нормально до EFCore 2.2.6 и, начиная с обновления 3.0, не работает, и я вижу, что его тогдашнее ядро ​​EF начало использовать пакет SQLitePCL. Поэтому не уверен, что проблема в самом EFCore или в зависимом пакете, который он использует.

Любая помощь действительно приветствуется.

Спасибо !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...