7

在我的应用程序中,我通过一些迁移启用了 Code First 迁移,并且我使用 SQL Server Compact 进行集成测试。

当我运行测试时,Entity Framework 创建一个空数据库并尝试在该空数据库上运行迁移并抛出The specified table does not exist.

根据这份报告,我认为 Entity Framework 6 中迁移的使用已经改变。

我测试了所有数据库初始化程序,Context.Database.Create();但在所有情况下都没有创建 tabale。

4

4 回答 4

18

我不知道这是否是 EntityFramework 的错误,但是当我将迁移配置类的命名空间从默认 (Projectname/Migrations) 重命名为任何非默认名称时,迁移效果很好。

于 2014-06-04T22:45:47.153 回答
2

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

于 2014-05-10T09:10:06.543 回答
0

以防有人仍然难以解决问题。

下面的代码对我有用:add-migration MyFirstMigration

同时add-migration "MyFirstMigration" ,在引用中增加迁移名称不起作用。

于 2020-10-06T10:46:14.140 回答
-1

添加模型和运行 add-migration 命令时确实会发生这种情况。

这是此问题的最简单原因:

将新添加的模型属性添加到 IdentityDbContex 类中。

以下是步骤:

  1. 创建模型
  2. 将属性添加到 IdentityDbContext 类中
  3. 运行添加迁移
  4. 更新数据库
于 2017-05-11T15:10:53.493 回答