问题描述
我最近能够使用 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.cs
和 20210616210256_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()
{
}
}