sql - Entity Framework Core 是否会在重命名模型属性时删除旧列?
问题描述
第一个问题:在 Entity Framework Core (EF Core) 中,如果重命名模型中的属性,EF 是否会删除数据库中的旧列?还是 EF 只是用新名称创建一个新列,而不管旧列?
第二个问题:如果 EF Core 确实删除了旧列,它是否会在存在即将被清除的数据时发出警告?
解决方案
简短的回答是 - 不。它不会删除该列。
为了验证,我创建了一个名为 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
。
推荐阅读
- css - 如何在 laravel 8 中安装引导程序
- python - 通过 lambda 函数读取 AWS S3 存储桶中的 .tif 文件,这些文件包含在另一个目录中
- php - 我可以在 php mysqli_prepare 中使用 IF NOT EXISTS SELECT 吗?
- stm32 - Nucleo-H743ZI2 板的问题
- ios - 即使在 Swift iOS 中缩小,如何在 mapView 中显示所有地图图钉
- spring - 禁用 Spring Boot/Cloud 中的功能
- node.js - 为什么游戏名称在节点抽搐中不可用?
- python - 如何在 Python 中的字典值上应用函数?
- git - 语义发布未创建新版本和更改日志未推送到 GitLab
- angular - 登录时角度导航栏发生变化