第4章 4.4 EF Core数据库迁移 Add-Migration UpDate-Database

打印 上一主题 下一主题

主题 916|帖子 916|积分 2748

4.4.1 数据库迁移原理

 

总结一下就是:
1. 数据库迁移命令的执行,其实就是生成在数据库执行的脚本代码(两个文件:数字_迁移名.cs     数字_迁移名.Designer.cs),用于对数据库举行定义和修饰。
2. 数据库迁移有两个方法 【向上】和【向下】,个人理解:其实向上就是更新,向下就是还原上一版本。
演示一下。假设先已完成环境搭建,且创建了一个新的表格T_Dogs,模式如下:
  1. public class Dog
  2. {
  3.     public long ID { get; set; }
  4.     public string Name { get; set; }
  5. }
复制代码
如今给这个数据库增加一列,【Age】
  1. public class Dog
  2. {
  3.     public long ID { get; set; }
  4.     public string Name { get; set; }
  5.     public int Age { get; set; }
  6. }
复制代码
然后 Add-Migration AddColumnAge

执行成功后观察项目目录,已经生成了对应的脚本文件:

然后查抄这个脚本文件会发现,文件里有两个方法:Up:执行新增这一列的操纵 Down:执行删除这一列的操纵 ,代码如下:
  1. public partial class AddColumnAge : Migration
  2. {
  3.     /// <inheritdoc />
  4.     protected override void Up(MigrationBuilder migrationBuilder)
  5.     {
  6.         migrationBuilder.AddColumn<int>(
  7.             name: "Age",
  8.             table: "T_Dogs",
  9.             type: "int",
  10.             nullable: false,
  11.             defaultValue: 0);
  12.     }
  13.     /// <inheritdoc />
  14.     protected override void Down(MigrationBuilder migrationBuilder)
  15.     {
  16.         migrationBuilder.DropColumn(
  17.             name: "Age",
  18.             table: "T_Dogs");
  19.     }
  20. }
复制代码
然后更新数据库:update-database

更新完成后检察数据库已完成新增这一列:

然后检察数据库的脚步执行历史,末了执行的就是刚才迁移时生成的脚本(20250223071051_AddColumnAge):

4.4.2 其他数据库迁移命令

固然,数据库迁移不光只有update-database和Add-Migration,EF 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=.;Database=demo1;Trusted_Connection=True;’ Microsoft.EntityFrameworkCore.SqlServer

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表