EF 6 CodeFirst迁移不起作用

时间:2014-04-08 03:07:39

标签: c# entity-framework ef-migrations

好的,所以我已经阅读了其他帖子,但我仍然没有到达任何地方。我将我的项目设置为Startup,我在App.config中有一个连接字符串。我在VS2013中使用LocalDb。

如果我删除了我的数据库,它会创建它,但是,如果我尝试

 PM> Enable-Migrations 

它告诉我,项目TestCodeFirst中已经启用了迁移。如果我再尝试

 PM> Update-Database 

它告诉我在程序集“TestCodeFirst”中找不到迁移配置类型,并建议我尝试启用迁移。我试过添加-Force参数。 Migrations文件夹只有Configuration.cs,在该文件中,我尝试将AutomaticMigrationsEnabled设置为true和false,没有区别。我没有丢失,因为我总是可以删除我的数据库并重新运行,但我没有看到任何方法使迁移功能像宣传的那样工作。忏悔:有一次,我接受了PM的建议并试图删除Migrations文件夹。这可能是一个错误。

我的Program.cs文件中有这段代码片段(我只是在控制台应用中测试):

class Program
{
    static void Main(string[] args)
    {
        using (TestContext db = new TestContext())
        {
            ...
            Db.ThisOrThat.Add(stuff);
            Db.SaveChanges();
            ...
        }
    }
}

2 个答案:

答案 0 :(得分:4)

Entity Framework Code First方法自动创建数据库,Code First将自动将表添加到数据库中,这有助于记录与相关模型类的数据库同步模式。实体框架抛出错误,数据库与类不同步。

在数据库中执行代码优先迁移:

  • 删除数据库的MDF文件

  • 打开软件包管理器控制台并编写以下命令

    启用 - 迁移--ContextTypeName ConsoleApp.Models.TestContext

  • 创建Configurations.cs课程,然后您可以编辑代码

  • 构建应用程序后,在程序包管理器控制台中输入以下命令:

    add-migration Initial

    update-database

注意:如果收到错误,则需要确保从App_Data文件夹中永久删除mdf文件。否则,您可以转到SQL Server对象资源管理器,展开localDb服务器,并在“数据库”选项中确保删除mdf文件。

  • 调试应用程序

答案 1 :(得分:2)

您需要运行“Add-Migration”命令,该命令将实际添加“Update-Database”命令将运行的迁移:

Code First Migrations

“添加迁移将根据您自上次迁移创建以来对模型所做的更改来支持下一次迁移”