微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实体框架数据库优先 - 如何防止运行初始迁移?

如何解决实体框架数据库优先 - 如何防止运行初始迁移?

我最近能够使用 EF Core 搭建一个现有的数据库。我们希望完全迁移到 EF Core,但我们遇到了一些障碍,我需要您的帮助。

我们从运行 scaffold 命令开始,最终得到这个文件结构

C:\>ls .\EFCore
Context
Models
EFCore.csproj

然后在创建上下文和模型之后,我运行了初始迁移命令。

dotnet ef migrations add CreateDb

运行该命令后,我们的目录如下所示

C:\>ls .\EFCore
Context
Models
Migrations
EFCore.csproj

C:\>ls .\EFCore\Migrations
20210616210256_CreateDb.cs
20210616210256_CreateDb.Designer.cs
DbContextModelSnapshot.cs

我的问题

数据库已经在所有环境中创建,所以我们不希望实体执行初始数据库迁移。我应该删除 20210616210256_CreateDb.cs20210616210256_CreateDb.Designer.cs 以实现此目的吗?

我能想到的另一种方法是创建 __EFMigrationsHistory 表并在其中插入一行。这会假装我们已经运行了初始数据库创建。

请帮忙,我想以最干净的方式做到这一点。

解决方法

删除/注释迁移文件的 Up() 和 Down() 方法中的代码并调用更新数据库。您不想要创建表格的代码,即

CreateTable(
            "dbo.YourTable",c => new
                { //Properties set here })

您的迁移类可能如下所示 -

public partial class Initial : DbMigration
{
    public override void Up()
    {   
    }
    
    public override void Down()
    {
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。