EF Core: используйте sqlite для тестов в 2 разных контекстах - PullRequest
0 голосов
/ 17 января 2019

Я впервые начал использовать EF Core с ядром asp.net, и должен признаться, что я не нахожу этот опыт таким хорошим (особенно если вы из NH). Теперь у меня есть следующий сценарий:

  • 2 разных DbContexts и каждый контекст использует разные схемы
  • API был настроен таким образом, что некоторые операции API были заключены в транзакцию (на практике все было настроено так, что существует единственное соединение sql, которое совместно используется в обоих контекстах)

Я бы хотел протестировать подобные методы, но я не уверен в том, какой подход лучше ... После прочтения документации, похоже, что лучшим вариантом является использование SQLite, но есть небольшой шаг: настройка дБ.

В документах сказано, что я могу использовать метод context.Database.EnsureCreated. К сожалению, это будет работать только в том случае, если база данных в памяти еще не создана. Другими словами, после вызова if из 1-го экземпляра контекста он не будет ничего делать при вызове через 2-й экземпляр контекста (поскольку оба контекста используют один и тот же БД, и он уже был создан после 1-го вызова). На практике это означает, что я получу частичную базу данных, в которой таблицы будут сопоставлены с сущностями 1-го контекста.

Есть ли способ форсировать создание 2-х контекстных таблиц? Т.е. можно ли написать что-нибудь подобное с EF Core:

contextA.Database.EnsureCreated();
contextB.Database.JustCreateTheTablesPlease();

Или мне нужно пересоздать свою базу данных из сценария SQL перед запуском моих тестов?

Спасибо.

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