在我的应用程序中,我通过一些迁移启用了代码优先迁移,我也使用SQL Server Compact进行集成测试。
当我运行测试时,Entity Framework会创建一个空数据库并尝试在该空数据库上运行迁移并抛出The specified table does not exist.
基于this报告,我认为实体框架6中迁移的使用已发生变化。
我使用Context.Database.Create();
测试所有数据库初始化程序,但在所有情况下,从未创建过tabale。
答案 0 :(得分:15)
我不知道这是EntityFramework的错误与否,但当我将Migration Configuration类的命名空间从默认名称(Projectname / Migrations)重命名为任何无默认名称时,迁移效果很好。
答案 1 :(得分:0)
Context.Database.Create()不会执行迁移!它只创建空数据库。要将数据库从代码更新到最新版本,您需要使用DbMigrator.Update方法:
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
答案 2 :(得分:0)
万一有人仍在努力解决问题。
以下代码对我有用:add-migration MyFirstMigration
同时将迁移名称加引号引起的add-migration "MyFirstMigration"
无效。
答案 3 :(得分:-1)
添加模型并运行add-migration命令时会发生这种情况。
以下是此问题的最简单原因:
将新添加的模型属性添加到IdentityDbContex类中。
以下是步骤: