EF 6代码优先迁移不起作用

本文关键字:迁移 不起作用 代码 EF | 更新日期: 2023-09-27 17:57:10

好吧,所以我已经阅读了其他线程,但仍然没有取得任何进展。我的项目设置为Startup,在App.config中有一个连接字符串。我在VS2013中使用LocalDb。

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

 PM> Enable-Migrations 

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

 PM> Update-Database 

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

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

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

EF 6代码优先迁移不起作用

实体框架代码优先方法会自动创建数据库,代码优先会自动向数据库中添加一个表,这有助于记录数据库与相关模型类同步的模式。实体框架抛出错误,数据库未与类同步。

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

  • 删除数据库的MDF文件

  • 打开Package Manager控制台并编写以下命令

    启用迁移-ContextTypeName控制台App.Models.TestContext

  • 它创建了Configurations.cs类,然后您可以编辑代码

  • 构建应用程序后,在Package Manager控制台中输入以下命令:

    add-migration Initial

    update-database

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

  • 调试应用程序

您需要运行"添加迁移"命令,该命令将实际添加"更新数据库"命令将运行的迁移:

代码优先迁移

"添加迁移将根据自上次迁移创建以来对模型所做的更改来构建下一次迁移">