Сбросить сгенерированную базу данных codefirst в app_start

У меня есть проект codefirst с использованием EF6, который я хотел бы сбрасывать базу данных каждый раз при запуске приложения (только в dev)

Есть ли способ применить первоначальную миграцию, за которой следует команда update-database, без необходимости делать это из окна PM в VS?

Я хочу удалить все данные, которые я генерирую во время игры с приложением


person Diver Dan    schedule 19.03.2014    source источник


Ответы (1)


Вы можете поместить следующее в свой Global.asax:

Database.Delete();
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());

ApplicationDbContext будет ссылаться на контекст, который вы пытаетесь удалить/мигрировать.

Возможно, вы захотите поставить #if DEBUG или какое-то другое условное выражение, чтобы оно не попало в prod.

person Dismissile    schedule 19.03.2014
comment
Спасибо Dismissile, я получаю сообщение об ошибке в Database.Delete - Невозможно удалить базу данных, потому что она в настоящее время используется. - person Diver Dan; 20.03.2014
comment
Вероятно, у вас открыта студия управления sql и подключена к базе данных. закройте его, и вам должно быть хорошо идти. Если он размещен в IIS, вы также можете остановить приложение на секунду. - person Drauka; 20.03.2014
comment
Только с помощью VS для подключения через обозреватель серверов. Отключение оттуда не помогает. Если я закрываю Vs и снова запускаю команду, она работает, но кажется довольно плохой, если мне приходится каждый раз закрывать VS :( - person Diver Dan; 20.03.2014
comment
@DiverDan Вы каждый раз избавляетесь от своих контекстов? Если вы этого не сделаете, у вас все еще может быть активное соединение с базой данных. - person Dismissile; 20.03.2014