【问题标题】:Does Entity Framework Core remove old columns upon renaming model properties?Entity Framework Core 是否会在重命名模型属性时删除旧列?
【发布时间】:2019-07-12 22:24:51
【问题描述】:

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

第二个问题:如果 EF Core 确实删除了旧列,它会在存在即将被清除的现有数据时发出警告吗?

【问题讨论】:

    标签: sql entity-framework-core


    【解决方案1】:

    简短的回答是 - 不。它不会删除列。

    为了验证,我创建了一个名为 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 时插入的值。

    【讨论】:

      猜你喜欢
      • 2018-09-22
      • 2016-08-24
      • 1970-01-01
      • 2018-01-22
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      相关资源
      最近更新 更多