Нулирайте първо генерирана кодова база данни на 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 за свързване чрез сървъра Explorer. Прекъсването на връзката оттам не помага. Ако затворя Vs и стартирам отново командата, тя работи, но изглежда доста зле, ако трябва да затварям VS всеки път :( - person Diver Dan; 20.03.2014
comment
@DiverDan Изхвърляте ли контекстите си всеки път? Ако не направите това, все още можете да имате активна връзка с базата данни. - person Dismissile; 20.03.2014