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

问题描述

我最近能够使用 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()
    {
    }
}