Xamarin Forms, Sqlite, EF Core 3, миграции и много путаницы - PullRequest
0 голосов
/ 06 марта 2020

У меня есть приложение 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, и много работы вокруг.

  1. https://forums.xamarin.com/discussion/101805/xamarin-android-entity-framework-core-2-and-migrations - это говорит о запуске миграций с помощью добавления консольного приложения
  2. https://medium.com/@yostane / entity-framework-core-and-sqlite -database -igration-using-vs2017-macos-28812c64e7ef - это дополнение Dot Net Справочник по инструменту Cli . Я попробовал это и получил ошибки, но это также EF Core 1.1
  3. https://www.algoworks.com/blog/xamarin-forms-and-entity-framework-core/ - дал мне больше вопросов, чем ответов.

Есть еще ссылки, но я, они, подтверждают мою точку зрения на все различные подходы.

Я пытаюсь достичь:

  1. Когда пользователь открывает приложение, он проверяет, есть ли обновление версии БД или приложение обновлено, и знает, что ему нужно обновить базу данных.
  2. При обновлении БД 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.

Надеюсь, я это прояснил. Спасибо

1 Ответ

0 голосов
/ 12 марта 2020

Вам нужно будет создать фиктивное консольное приложение , как уже упоминалось. Вот инструкция для установки инструментов . После этого нормальный рабочий процесс миграции должен работать на Xamarin (обязательно дайте нам знать , если это не так).

Add-Migration MyMigration -P MyNetStandardClassLibrary -S DummyNetCoreApp

Вы можете применить миграции во время выполнения, используя этот метод:

myDbContext.Database.Migrate();
...