Я создал приложение с Entity Framework 6, создал некоторые методы для вставки извлеченных данных из базы данных, и теперь я бы хотел протестировать его как для среды производства, так и для отладки ,Две идентичные сгенерированные базы данных с Entity Framework 6
Чтобы убедиться, что все работает так, как хотелось бы, база данных отладки должна удалять все данные для моих тестов, в то время как мое производство должно хранить свои данные.
У меня есть два проекта: MyApp.Database
и MyApp.Database.Test
, и каждый из них имеет соединительную-нить в их app.config
-файла, что программа загружает таким образом:
public DatabaseContext() : base("name=MyDB")
{
System.Data.Entity.Database.SetInitializer<DatabaseContext>(new CreateDatabaseIfNotExists<DatabaseContext>());
}
и соединение строка, где параметр database
установлен в MyProdDB
и MyTestDB
:
<connectionStrings>
<add name="MyDB" connectionString="Host=localhost;user id=myUser;password=myPassword;database=MyProdDB" providerName="Npgsql" />
</connectionStrings>
Когда я запустить приложение и запустить тесты, я получить правильное соединение-строку для каждого типа базы данных. Но я получаю сообщение об ошибке, когда я запускаю свои тесты : 42P01: relation "dbo.Tags" does not exist
. Простое сообщение, в котором говорилось, что я не перенес мои данные в свою тестовую базу данных.
Но как перенести его в тестовую базу данных?
Я попытался выбрать тест-проект в Package manager Console
, и выполнив следующие команды:
PM> Add-Migration "Init"
No migrations configuration type was found in the assembly 'MyApp.Database.Test'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).
PM> Update-Database
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
No migrations configuration type was found in the assembly 'MyApp.Database.Test'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).
PM> Enable-Migrations
No context type was found in the assembly 'MyApp.Database.Test'.
мне нужно указать свой DbContext
класс для MyApp.Database.Test
который является почти точной копией MyApp.Database
ли?
Я запутался, будьте вы пытаетесь настроить модульные тесты или два различных сред - PROD и DEV. IAC, вам, вероятно, нужен только ваш контекст в одном проекте, в котором будут жить миграции. Чтобы обновить PROD, вы можете либо переключить строку соединения (в контексте проекта), чтобы указать на PROD и запустить миграцию, либо вы можете сгенерировать скрипт для обновления другой базы данных «update-database -Script». –
Мне нужны интеграционные тесты для одной и той же среды. Я не хочу потерять данные в PROD - только в DEV. Мой PROD обновлен и работает как следует. Если я попытаюсь запустить '' Update-Database -Script', он говорит, что у меня нет ожидающих явных миграций. Могу ли я попросить, чтобы он переместился с 0? –
Оказывается, я могу: '' Update-Database -Script -SourceMigration: 0''. Давайте посмотрим, что это заставляет меня ... –