У меня есть приложение Xamarin Forms, которое я переключил с использования только restful API на локальную БД SQLite, которая будет синхронизировать c с использованием этой Dotmim.Syn c - DB Syn c 'ing Framework (что здорово!). Я использую EF Core 3 в проекте Xamarin для взаимодействия с SQLite.
Мои вопросы касаются запуска миграций или просто обновлений баз данных на SQLite. Я читал несколько блогов и форумов о различных подходах, но им всем по несколько лет, от EF Core 1 до EF Core 2, и много работы вокруг.
- https://forums.xamarin.com/discussion/101805/xamarin-android-entity-framework-core-2-and-migrations - это говорит о запуске миграций с помощью добавления консольного приложения
- https://medium.com/@yostane / entity-framework-core-and-sqlite -database -igration-using-vs2017-macos-28812c64e7ef - это дополнение Dot Net Справочник по инструменту Cli . Я попробовал это и получил ошибки, но это также EF Core 1.1
- https://www.algoworks.com/blog/xamarin-forms-and-entity-framework-core/ - дал мне больше вопросов, чем ответов.
Есть еще ссылки, но я, они, подтверждают мою точку зрения на все различные подходы.
Я пытаюсь достичь:
- Когда пользователь открывает приложение, он проверяет, есть ли обновление версии БД или приложение обновлено, и знает, что ему нужно обновить базу данных.
- При обновлении БД Dotmim.Syn c Framework контролирует Предоставление и удаление базы данных на клиенте (Xamarin Forms). Что дает возможность запускать EFCore Migrations или SQL Sricpts для обновления хранилища SQLite.
Option 1 Я хотел бы go путь миграции ядра EF, так как Master DB обновляется с помощью миграций, приложение сможет использовать те же сценарии. Если возможно выполнение миграций на формах Xamarin во время выполнения, это было бы здорово.
Q1 . Может ли EF Core выполнять зеркалирование в приложениях Xamarin Forms во время выполнения, так же, как в проекте .netcore / netframework?
Вариант 2 Если запуск сценариев должен быть подходящим путем, который я исследовал и означает, что мне нужно, чтобы схема SQLite сравнивала Инструмент 1 и tool 2 , я попробовал инструмент один на SQLite db3, и он выдал ошибку. Не желал платить за Инструмент 2, если без проверки он не работает.
Q2 . Существует ли инструмент сравнения SQLite для генерации изменений схемы?
Q3 . Или каков путь обновления базы данных для sqlite, развернутого на клиентах, что было бы лучше, то есть сбросить БД и просто воссоздать ее? затем повторно синхронизируйте c БД, чтобы загрузить обратно все пользовательские данные c. Шансы на потерю данных будут минимальными, syn c logi c в приложении будет частым, неуверенным после каждого события изменения пользовательских данных, но возможным, если нам нужно убедиться, что сервер никогда не выйдет из строя c.
Надеюсь, я это прояснил. Спасибо