实体框架6 - 启用迁移时不创建表

时间:2014-05-10 08:09:52

标签: entity-framework ef-migrations entity-framework-6.1

在我的应用程序中,我通过一些迁移启用了代码优先迁移,我也使用SQL Server Compact进行集成测试。

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

基于this报告,我认为实体框架6中迁移的使用已发生变化。

我使用Context.Database.Create();测试所有数据库初始化程序,但在所有情况下,从未创建过tabale。

4 个答案:

答案 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类中。

以下是步骤:

  1. 创建模型
  2. 将属性添加到IdentityDbContex类
  3. 运行add-migration
  4. 更新的数据库