【问题标题】:How to run migration after scaffolding database搭建数据库后如何运行迁移
【发布时间】:2019-08-05 10:53:03
【问题描述】:

我有一个使用 EF Core 的 .NET Core 项目。我们已经在数据库中有一些表,所以我使用 EF Core 脚手架命令将所有表导入到我的应用程序中。

一切顺利,我已经建立了模型,我可以使用它们来访问数据库。

现在,我想像 EF Core Code First 方法一样更改我的模型。我更改模型并运行迁移。

但我的迁移失败并显示以下错误消息:

错误 CS0102:“mydbContext”类型已包含“激活”的定义

“激活”是我数据库中的表。数据库中的每个 表都会引发此错误。而且我无法运行迁移。

我的问题是,我该怎么做才能成功运行迁移并继续使用 Code First 方法?

我查看了各个地方和 Microsoft 文档。但没有一个显示在成功搭建脚手架后如何运行迁移。

PM> Add-Migration Initial -Context MyApp.Models.mydbContext

error CS0102: The type 'mydbContext' already contains a definition for 
'Activation'

error CS0102: The type 'mydbContext' already contains a definition for 
'Session'

....

我希望成功运行迁移并能够从代码更新数据库表。

【问题讨论】:

    标签: .net-core entity-framework-core migration scaffolding


    【解决方案1】:

    解决这个问题的简单方法是删除 Migration 的 Up() 方法(Migrations/initial 文件夹)中的所有函数。

    您还应该在 Down() 方法中删除对现有表的所有引用。否则,当您使用 Remove-Migration 回滚时,您最终会删除所有开始使用的现有表。

    现在运行更新数据库命令。这将在 db 和模型之间同步数据库状态。

    现在根据需要更改模型,添加新迁移,然后运行 ​​Update-Database 命令。

    希望这对其他人有所帮助!

    【讨论】:

    • 您还应该删除 Down() 方法中对现有表的所有引用。否则,当您使用 Remove-Migration 回滚时,您最终会删除所有开始使用的现有表。
    猜你喜欢
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2016-10-01
    相关资源
    最近更新 更多