Как мне воссоздать БД, используя код EF4, сначала для теста

Я использую Entity Framework 4 Code First в своем проекте .net MVC 2.0, и мне трудно синхронизировать мою БД с моими объектами. Что мне нужно, так это страница, которую я могу вызвать, например: /DB/Recreate, которая удалит мою текущую БД и воссоздаст пустую. В настоящее время в моем global.asax у меня есть

protected override void OnApplicationStarted()
        {
            Database.SetInitializer(new CreateDatabaseOnlyIfNotExists<CorpiqDb>());

            AreaRegistration.RegisterAllAreas();

            RegisterRoutes(RouteTable.Routes);
            RegisterAllControllersIn(Assembly.GetExecutingAssembly());
        }

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

        Database.SetInitializer(new AlwaysRecreateDatabase<CorpiqDb>());
        var bidon = _session.All<Admin>();
        Database.SetInitializer(new CreateDatabaseOnlyIfNotExists<CorpiqDb>());
        bidon = _session.All<Admin>();

Я действительно не знаю, как это сделать, спасибо за помощь!


person VinnyG    schedule 29.11.2010    source источник


Ответы (1)


Хорошо, я нашел решение:

var dbContext = new CorpiqDb().Database ;
dbContext.Delete();
dbContext.Initialize();
dbContext.EnsureInitialized();
Database.SetInitializer(new CreateDatabaseOnlyIfNotExists<CorpiqDb>());

Это удалит мою базу данных и создаст новую, отражающую последние модели, я даже могу заполнить базу данных некоторыми данными для своего теста.

person VinnyG    schedule 30.11.2010
comment
Спасибо, что опубликовали свой ответ. - person Adam Lenda; 22.02.2011