C# 如何在EF Core 3.1中重命名PrimaryKey和ForeignKey?

C# 如何在EF Core 3.1中重命名PrimaryKey和ForeignKey?,c#,.net-core,entity-framework-core,C#,.net Core,Entity Framework Core,我最近重命名了数据库中的列名。当创建一个新的迁移和我看到的:EF核心立即删除列并创建一个新的。这对我来说毫无意义。是否有重命名外键或主键的方法?使用“fluent API”,如下所示: protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Student>() .HasMany(c => c.Employees) .

我最近重命名了数据库中的列名。当创建一个新的迁移和我看到的:EF核心立即删除列并创建一个新的。这对我来说毫无意义。是否有重命名外键或主键的方法?

使用“fluent API”,如下所示:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>()
        .HasMany(c => c.Employees)
        .WithOne(e => e.Company)
        .HasConstraintName("NamFKConstraint");
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity()
.HasMany(c=>c.Employees)
.有一家(e=>e.Company)
.HasConstraintName(“NamFKConstraint”);
}

MigrationsModelDifference是检测模型更改的服务类。它通过比较数据库模型的两个快照来猜测您更改了什么。只有当列的其他内容没有更改时,才可能检测到该列。如果您一次做了太多的更改,那么丢失的列将被删除,并添加新的列

如果这不是您想要的,您将需要修改迁移脚本以手动指定列重命名和其他类型更改

migrationBuilder.RenameColumn(
姓名:“旧名”,
表格:“表格名称”,
新名称:“新名称”);