Как я воссоздаю БД, используя код EF4 сначала для теста - PullRequest
1 голос
/ 29 ноября 2010

Я использую код Entity Framework 4 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>();

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

1 Ответ

2 голосов
/ 30 ноября 2010

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

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

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

...