Entity Framework 6 - не создает таблицы при включении миграции

в моем приложении я включаю первые миграции кода с некоторыми миграциями, также я использую SQL Server Compact для интеграционного теста.

когда я запускаю свои тесты, Entity Framework создает пустую базу данных и пытается запустить миграцию в этой пустой базе данных и бросил The specified table does not exist.

на основе этой отчет я думаю, что использование миграции в Entity Framework 6 изменилось.

Я тестирую все инициализаторы базы данных с помощью Context.Database.Create(); но в любом случае стол не создан.

3 ответов


Я не знаю, что это ошибка EntityFramework или нет, но когда я переименовал пространство имен класса конфигурации миграции из default (Projectname/Migrations) в любое имя none по умолчанию, миграция работает хорошо.


контексте.База данных.Create () не будет выполнять миграции! Он создает только пустую БД. Для обновления базы данных с кода до последней версии необходимо использовать DbMigrator.Метод обновления:

var migrator = new DbMigrator(new MyMigrationsConfiguration());
migrator.Update();

в качестве альтернативы вы можете использовать MigrateDatabaseToLatestVersion

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

подробно описано здесь:http://msdn.microsoft.com/en-us/data/jj591621.aspx#initializer


это происходит при добавлении модели и выполнении команды add-migration.

вот самая простая причина этой проблемы:

добавьте недавно добавленное свойство модели в класс IdentityDbContex.

вот шаги:

  1. создать модель
  2. добавить свойство в класс IdentityDbContex
  3. выполнить add-migration
  4. обновление-базы данных