Невозможно подключиться к SQLLite в MAUI (.NET 8)

У меня есть приложение, созданное в Мауи (.NET 7). Теперь я попытался обновиться до .NET 8 и обновил ВСЕ пакеты NuGet. С этого момента я не могу открыть соединение с внутренней базой данных SQLLite.

    public const SQLite.SQLiteOpenFlags Flags =
        SQLite.SQLiteOpenFlags.ReadWrite |
        SQLite.SQLiteOpenFlags.Create |
        SQLite.SQLiteOpenFlags.SharedCache;

    string sPath = BCDataConstants.DatabasePath;
    // value = /data/user/0/it.gattoneroph.photoapp/files/CAPhoto.db 
    // cames from =>       Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "CAPhoto.db");


    Database = new SQLiteAsyncConnection(sPath, Flags);
    // no error but "System.TypeInitializationException: The type initializer for 'SQLite.SQLiteConnection' threw an exception." in ALL properties

    CreateTableResult s= Database.CreateTableAsync<Tab_TabellaDatabase>().Result;
// here crashes

VS 2022 на Win 11 + API эмулятора 30

.NET 8

NuGet-пакеты

  • SQLitePCLRaw.Core 2.1.8
  • SQLite 3.13.0
  • SQLlite.PCLRaw.lib.e_sqlite3 2.1.8
  • SQLitePCLRaw.bundle_e_sqlite3 2.1.8
  • SQLitePCLRaw.bundle_green 2.1.8
  • Система.Данные.SQLite.Core 1.0.118
  • SQLitePCLRaw.provider.dynamic_cdecl 2.1.8

Что я могу сделать?

Перепробовал все, что знаю.

(РЕДАКТИРОВАТЬ)

Свойства соединения после конструктора

Stacktrace, когда я пытаюсь создать таблицу

11:07:55:509 [DOTNET] System.AggregateException: произошла одна или несколько ошибок. (Инициализатор типа для SQLite.SQLiteConnection выбросил исключение.) 11:07:55:509 [DOTNET] ---> System.TypeInitializationException: инициализатор типа для SQLite.SQLiteConnection выдал исключение. 11:07:55:509 [DOTNET] ---> System.TypeLoadException: установка VTable типа SQLitePCL.SQLite3Provider_e_sqlite3 не удалась 11:07:55:509 [DOTNET] в SQLite.SQLiteConnection..cctor() 11:07:55:509 [DOTNET] --- Конец внутренней трассировки стека исключений --- 11:07:55:509 [DOTNET] в SQLite.SQLiteConnectionWithLock..ctor(SQLiteConnectionString строка подключения) 11:07:55:509 [DOTNET] в SQLite.SQLiteConnectionPool.Entry..ctor(SQLiteConnectionString строка подключения) 11:07:55:509 [DOTNET] в SQLite.SQLiteConnectionPool.GetConnectionAndTransactionLock(SQLiteConnectionString ConnectionString, Object& TransactionLock) 11:07:55:509 [DOTNET] в SQLite.SQLiteConnectionPool.GetConnection(SQLiteConnectionString строка подключения) 11:07:55:509 [DOTNET] в SQLite.SQLiteAsyncConnection.GetConnection() 11:07:55:509 [DOTNET] в SQLite.SQLiteAsyncConnection.<>c__DisplayClass33_01[[SQLite.CreateTableResult, SQLite-net, Version=1.9.172.0, Culture=neutral, PublicKeyToken=null]].<WriteAsync>b__0() 11:07:55:509 [DOTNET] at System.Threading.Tasks.Task1[[SQLite.CreateTableResult, SQLite-net, Версия=1.9.172.0, Культура=нейтральная, PublicKeyToken=null]].InnerInvoke() 11:07:55:509 [DOTNET] в System.Threading.Tasks.Task.<>c.<.cctor>b__281_0(Object obj) 11:07:55:509 [DOTNET] в System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop (Thread threadPoolThread, ExecutionContext ExecutionContext, ContextCallback> обратный вызов, состояние объекта) 11:07:55:509 [DOTNET] --- Конец трассировки стека из предыдущего местоположения --- 11:07:55:509 [DOTNET] в SQLite.SQLiteConnectionWithLock..ctor(SQLiteConnectionString строка подключения) 11:07:55:509 [DOTNET] в SQLite.SQLiteConnectionPool.Entry..ctor(SQLiteConnectionString строка подключения) 11:07:55:509 [DOTNET] в SQLite.SQLiteConnectionPool.GetConnectionAndTransactionLock(SQLiteConnectionString> ConnectionString, Object& TransactionLock) 11:07:55:509 [DOTNET] в SQLite.SQLiteConnectionPool.GetConnection(SQLiteConnectionString строка подключения) 11:07:55:509 [DOTNET] в SQLite.SQLiteAsyncConnection.GetConnection() 11:07:55:509 [DOTNET] в SQLite.SQLiteAsyncConnection.get_Tracer() 11:07:55:509 [DOTNET] --- Конец внутренней трассировки стека исключений --- 11:07:55:509 [DOTNET] в System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) 11:07:55:509 [DOTNET] в System.Threading.Tasks.Task1[[SQLite.CreateTableResult, SQLite-net, Version=1.9.172.0, Culture=neutral, PublicKeyToken=null]].GetResultCore(Boolean waitCompletionNotification) 11:07:55:509 [DOTNET] at System.Threading.Tasks.Task1[[SQLite.CreateTableResult, SQLite-net, Версия = 1.9.172.0, Культура = нейтральная, PublicKeyToken = null]].get_Result() 11:07:55:509 [DOTNET] в PhotoApp.Classes.Database.BCDataConnection..ctor() в C:\Progetti

«Пытался обновиться до C# 8.0» — вы имеете в виду «.Net 8 », не так ли? Не совсем C# 8.0 ...

Fildor 06.06.2024 10:58
Database.CreateTableAsync<Tab_TabellaDatabase>().Result - подозрительно, но, возможно, проблема не в этом... System.TypeInitializationException - можете выложить трассировку стека? Как объявлен тип Database?
Fildor 06.06.2024 11:04

@Fildor готово (отредактированное сообщение).. да, извините (.net 8.0)

Denis De Pauli 06.06.2024 11:13

На всякий случай: вы 1. Выполнили чистую сборку проекта/решения 2. Закрыли IDE 3. Вручную удалили (правильную) папку /bin 4. Снова открыли IDE 5. Построили решение?

Fildor 06.06.2024 11:19

Да... это одно из первых, что я попробовал :(

Denis De Pauli 06.06.2024 11:40
VTable setup of Type ??? failed. может быть вызвано обновлением одного из ваших проектов до более новой версии библиотеки и невыполнением этого для всех ваших проектов. Пожалуйста, проверьте ссылку на установленные пакеты nuget, если они имеют одинаковую версию. Пожалуйста, создайте новый эмулятор и запустите приложение, оно работает?
user10627299 10.06.2024 08:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
100
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нашел решение... Я удалил ВСЕ пакеты NuGet sqllite и установил ТОЛЬКО 2

  • sqlite-net-pcl v. 1.9.172
  • SQLitePCLRaw.bundle_green v2.1.8

также изменено имя базы данных «CAPhoto.db» на «CAPhoto.db3» и путь dbpath на FileSystem.AppDataDirectory.

Теперь таблицы будут успешно созданы

Другие вопросы по теме

Похожие вопросы

Как преобразовать тип в универсальный тип, фактический тип которого известен в момент преобразования?
Как решить проблему «ManagedIdentityCredential.GetToken не удалось получить токен доступа». при использовании Azure ServiceBusTrigger и управляемого удостоверения?
Селектор шаблонов данных нажимается только один раз, а не при обновлении полного свойства
Как разрешить окну использовать стиль по умолчанию, но не стиль инфраструктуры пользовательского интерфейса (Lepoco WPFUI) в WPF?
Можно ли сохранить только отношение и определенную таблицу в отношении «многие ко многим» с помощью Entity Framework Core?
ASP.NET Core — отключить HTTP/2 в HttpSys
Каковы текущие рекомендации по использованию API-интерфейсов async/await для замены событий .NET?
Azure SDK .NET — пакетное удаление больших двоичных объектов с помощью SAS
Конфигурация DBContext генерирует ошибку конфигурации
Можете ли вы безопасно использовать async await внутри обработчика событий async void в С#?