代码之家  ›  专栏  ›  技术社区  ›  user3163495

实体框架在重命名模型属性时是否删除旧列?

  •  0
  • user3163495  · 技术社区  · 7 年前

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

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

    0 回复  |  直到 7 年前
        1
  •  2
  •   jefftrotman    7 年前

    简言之,答案是-不,它不会掉栏。

    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';
    

    所以-它不拖放,它只是重命名现有的列。

    再次更新数据库后,我的记录仍然存在,其中包含我在创建列时插入的值 姓名 .