重命名模型属性时,Entity Framework Core是否会删除旧列?

时间:2019-07-12 22:24:51

标签: sql entity-framework-core

第一个问题:在Entity Framework Core(EF Core)中,如果您在模型中重命名属性,EF会不会删除数据库中的旧列?还是EF只是用新名称简单地创建了一个新列,而又不理会旧列呢?

第二个问题:如果EF Core确实删除了旧列,是否会警告您是否有现有数据要清除?

1 个答案:

答案 0 :(得分:2)

最简单的答案是-不。它不会删除该列。

为了验证,我创建了一个名为Book的模型。

public class Book
{
    public int BookId { get; set; }
    public string Name { get; set; }
}

我添加了迁移并更新了数据库。然后,我在表中放入了几条记录。

然后我将模型中的Name属性更改为Description

当我添加另一个迁移时,这是Up方法中的相关代码。

 migrationBuilder.RenameColumn(
    name: "Name",
    table: "Books",
    newName: "Description");

这被翻译成以下TSQL

 EXEC sp_rename N'[Books].[Name]', N'Description', N'COLUMN';

所以-它不会删除和添加,它只是重命名了现有列。

再次更新数据库后,我的记录仍然保留着当列为Name时插入的值。