use*_*495 2 sql entity-framework-core
第一个问题:在 Entity Framework Core (EF Core) 中,如果重命名模型中的属性,EF 是否会删除数据库中的旧列?或者 EF 是否只是使用新名称创建一个新列,而保留旧列?
第二个问题:如果 EF Core 确实删除了旧列,它会警告您是否存在即将被擦除的现有数据吗?
小智 5
简短的回答是 - 不。它不会删除该列。
为了验证,我创建了一个名为 Book 的模型。
public class Book
{
public int BookId { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我添加了迁移并更新了数据库。然后我在表中放入了几条记录。
然后我将Name模型中的属性更改为Description.
当我添加另一个迁移时,这里是方法中的相关代码Up。
migrationBuilder.RenameColumn(
name: "Name",
table: "Books",
newName: "Description");
Run Code Online (Sandbox Code Playgroud)
这被翻译成以下 TSQL
EXEC sp_rename N'[Books].[Name]', N'Description', N'COLUMN';
Run Code Online (Sandbox Code Playgroud)
所以 - 它不会删除和添加,它只是重命名现有的列。
再次更新数据库后,我的记录仍然存在,其中包含我在列为 时插入的值Name。
| 归档时间: |
|
| 查看次数: |
594 次 |
| 最近记录: |