问答系统网站模板,抖音代运营合作,国家企业信息公示网查询官网,营销资源网4.4.1 数据库迁移原理 总结一下就是#xff1a;
1. 数据库迁移命令的执行#xff0c;其实就是生成在数据库执行的脚本代码#xff08;两个文件#xff1a;数字_迁移名.cs 数字_迁移名.Designer.cs#xff09;#xff0c;用于对数据库进行定义和修饰。
2. 数据库迁移…4.4.1 数据库迁移原理 总结一下就是
1. 数据库迁移命令的执行其实就是生成在数据库执行的脚本代码两个文件数字_迁移名.cs 数字_迁移名.Designer.cs用于对数据库进行定义和修饰。
2. 数据库迁移有两个方法 【向上】和【向下】个人理解其实向上就是更新向下就是还原上一版本。
演示一下。假设先已完成环境搭建且创建了一个新的表格T_Dogs模式如下
public class Dog
{public long ID { get; set; }public string Name { get; set; }
}
现在给这个数据库增加一列【Age】
public class Dog
{public long ID { get; set; }public string Name { get; set; }public int Age { get; set; }
}
然后 Add-Migration AddColumnAge 执行成功后观察项目目录已经生成了对应的脚本文件 然后检查这个脚本文件会发现文件里有两个方法Up执行新增这一列的操作 Down执行删除这一列的操作 代码如下
public partial class AddColumnAge : Migration
{/// inheritdoc /protected override void Up(MigrationBuilder migrationBuilder){migrationBuilder.AddColumnint(name: Age,table: T_Dogs,type: int,nullable: false,defaultValue: 0);}/// inheritdoc /protected override void Down(MigrationBuilder migrationBuilder){migrationBuilder.DropColumn(name: Age,table: T_Dogs);}
}
然后更新数据库update-database 更新完成后查看数据库已完成新增这一列 然后查看数据库的脚步执行历史最后执行的就是刚才迁移时生成的脚本20250223071051_AddColumnAge 4.4.2 其他数据库迁移命令
当然数据库迁移不光只有update-database和Add-MigrationEF Core还提供了一些其他的命令。下面介绍几个常用的 1. update-database其他参数
update-database 【这里写迁移命令时的名称可以将数据库回滚或者升级到对应的版本】
2. 删除迁移脚本Remove-migration
Remove-migration命令删除最后一次的迁移脚本
3. 生成迁移脚本Script-Migration
在开发环境中可以随意使用update-database进行数据库更改迁移但如果要修改实际生成环境的数据库的话需要相关人员审计才能被允许修改。
对于这种场景 EF Core中提供了Script-Migration命令来根据迁移代码生成SQL脚本这个脚本可以通过审计后在生产数据库中执行。
此外如果数据库已经是迁移版本的状态了比如已经是D版本要升级到F版本则可以Script-Migration D F 来生成D到F的升级的脚本
4.4.3 反向工程慎用
杨老师说这是一个灾难及操作别用它。哈哈哈其实也还好就是确实不太推荐应为这种方式不符合“模型驱动的开发理念”。
意思就是手动维护数据库然后用反向工程生成实体类。
生成时用指令
Scafflod-DBContext ‘Server.Databasedemo1Trusted_ConnectionTrue’ Microsoft.EntityFrameworkCore.SqlServer