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.
вот шаги:
- создать модель
- добавить свойство в класс IdentityDbContex
- выполнить add-migration
- обновление-базы данных