【问题标题】:EF 6 CodeFirst Migrations Not WorkingEF 6 CodeFirst 迁移不起作用
【发布时间】:2014-04-08 03:07:38
【问题描述】:

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

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

 PM> Enable-Migrations 

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

 PM> Update-Database 

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

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

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

【问题讨论】:

    标签: c# entity-framework entity-framework-migrations


    【解决方案1】:

    Entity Framework Code First 方法会自动创建您的数据库,Code First 会自动将一张表添加到数据库中,这有助于记录数据库与相关模型类同步的架构。 Entity Framework 报错,数据库与类不同步。

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

    • 删除数据库的MDF文件

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

      Enable-Migrations -ContextTypeName ConsoleApp.Models.TestContext

    • 它创建Configurations.csclass,然后你可以编辑你的代码

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

      add-migration Initial

      update-database

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

    • 调试应用程序

    【讨论】:

    • 这是让我解决问题的顺序:1. 删除数据库,2. 从我的项目中删除 Migrations 文件夹,3. 如上所述启用-迁移,然后 4. 添加-迁移初始和5.(干净构建后)更新数据库。谢谢尼米特。
    【解决方案2】:

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

    Code First Migrations

    “Add-Migration 将根据您自上次迁移创建以来对模型所做的更改为下一次迁移搭建基架”

    【讨论】:

    • 因此,在对将影响 DB 模式的 POCO 类进行每次更改后,需要在 PM 中执行两个步骤:添加-迁移名称-For-This-Migration-Goes-Here 然后更新-数据库 那么一切都很好!谢谢 Joonas 和 Nimit。
    猜你喜欢
    • 2018-10-19
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 2019-03-27
    相关资源
    最近更新 更多