Как изменить проект EF-Core Database-First (PostgreSQL), чтобы он также работал с SQLite и Xamarin.Forms - PullRequest
0 голосов
/ 23 октября 2019

Мой сценарий

У меня есть база данных PostgreSQL. Я создал модели (команда Scaffold-Db) для нее, используя EntityFrameworkCore «база данных сначала». Классы EntityFrameworkCore находятся в библиотеке классов .NET Standard 2.0, потому что я планирую использовать ее на нескольких платформах (WPF, Xamarin.Forms).

PostgreSQL работает с моим проектом WPF. Чтобы заставить его работать с моим проектом Xamarin.Forms, я создал миграцию для SQLite с помощью команды Add-Migration.

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

Проблема

Проблема в том, что когда я запускаю проект Xamarin.Forms и пытаюсь использовать базу данных, я получаю исключение, говорящее« SQLite не поддерживает последовательности ».

Вопрос

Есть ли у кого-нибудь опыт ручного редактирования миграции, чтобы он работал с SQLite ?

Вот что я использую:

  • Visual Studio 2019 версии 16.3.5
  • Microsoft.EntityFrameworkCore 2.2.4
  • Microsoft. EntityFrameworkCore.Sqlite 2.2.4
  • Microsoft.EntityFrameworkCore.Design 2.2.4
  • Microsoft.EntityFrameworkCore.Tools 2.2.4
  • Xamarin.Forms 4.2.0.709249

1 Ответ

0 голосов
/ 24 октября 2019

Неважно, думаю, я понял это. Я забыл удалить эту часть modelBuilder.HasSequence("some_sequence_id"); в моем DbContext OnModelCreating методе.

Теперь база данных работает как на WPF, так и на Xamarin.Forms. Осталось только сделать механизм принятия решения для DbContext, поэтому она будет использовать правильного поставщика в зависимости от платформы.

Надеюсь, это кому-нибудь поможет.

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