Использование Fody Costura с миграциями Entity Framework Core - PullRequest
0 голосов
/ 23 апреля 2020

Моя программа WPF использует Entity Framewok Core 3.1.1 (сначала код) с базой данных SQLite. Если файл базы данных не существует при запуске, программа вызывает context.Database.Migrate() для его создания. Отлично работает.

Когда я добавил Costura.Fody (используя NuGet), эта огромная коллекция библиотек DLL исчезла, и программа все еще работает - пока ей не понадобится создать новый файл базы данных. Затем функция Migrate() завершается с ошибкой:

Инициализатор типа для «Microsoft.Data.Sqlite.SqliteConnection» выдал исключение - путь не имеет допустимой формы.

У меня похожая проблема, если я пытаюсь использовать Консоль диспетчера пакетов для добавления миграции вручную - я получаю

Ваш начальный проект не ссылается на Microsoft.EntityFrameworkCore.Design

При удалении пакета Fody Costura все снова начинает работать. Я не нашел ничего в SO или где-либо еще, где упоминается эта проблема, и Fody, кажется, очень популярен, поэтому я, должно быть, делаю что-то глупое, но я не знаю, где искать.

Кто-нибудь знает как заставить сосуществовать миграции Fody Costura и EF Core?

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 25 апреля 2020

Спасибо Трональду за то, что он поставил меня на правильный путь. Для всех, кто сталкивался с этим, для меня трюк состоял в том, чтобы исключить все библиотеки SQLitePCLRaw, например:

<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
  <Costura >
    <ExcludeAssemblies>
      SQLitePCLRaw.*
    </ExcludeAssemblies>
  </Costura>
</Weavers>
0 голосов
/ 07 мая 2020

КларкГ, о мой бог ... Я пытаюсь решить это как минимум 15 часов ясного времени. Спасибо!

Ваше решение работает на Migrate (), но не работает на add -igration xxx Это небольшая проблема ... Я просто удаляю fody каждый раз, когда создаю новую миграцию. А затем установите его снова.

Если я не удаляю Fody, то add -igration пишет:

Ваш стартовый проект "InstaGTO" не ссылается на Microsoft.EntityFrameworkCore.Design. Этот пакет необходим для работы основных инструментов Entity Framework. Убедитесь, что ваш проект запуска корректен, установите пакет и попробуйте снова.

0 голосов
/ 23 апреля 2020

Sqlite не работает как встроенный ресурс без небольшой настройки. Я знаю, что это общая проблема и с юнит-тестами, когда используется Costura.Fody, как , указанное в документации .

Простая настройка Weavers xml должна решить эту проблему. Взгляните на Встраивание Sqlite файлов .

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