P4-4 数据库迁移

数据库迁移


数据库迁移原理

  • 1、使用迁移脚本,可以对当前连接的数据库执行编号更高的迁移,这个操作叫做“向上迁移”(Up),也可以执行把数据库回退到旧的迁移,这个操作叫“向下迁移”(Down)。
  • 2、除非有特殊需要,否则不要删除Migrations文件夹下的代码。
  • 3、进一步分析Migrations下的代码。分析Up、Down等方法。查看Migration编号。
    • 行为
  • 4、查看数据库的__EFMigrationsHistory表:记录当前数据库曾经应用过的迁移脚本,按顺序排列。
    • 版本

其他数据库迁移命令

  • 1、Update-Database XXX
    • 把数据库回滚到XXX的状态,迁移脚本不动。
  • 2、Remove-migration
    • 删除最后一次的迁移脚本
  • 3、Script-Migration
    • 生成迁移SQL代码。有了Update-Database 为什么还要生成SQL脚本。
      • 因为Update-Database只适用于开发环境和测试环境~
      • 正式环境或生产环境只能用Script-Migration 生成的迁移SQL代码去使用
        • 毕竟有些公司还有DBA去审核这些东西
    • 可以生成版本D到版本F的SQL脚本:
      • Script-Migration D F
      • 生成版本D到最新版本的SQL脚本:Script-Migration D
      • 如果生产环境需要从D版本升到F版本,就只能通过上述生成的迁移SQL代码,去手动执行到生产环境中去

反向工程(慎用)

  • 1、根据数据库表来反向生成实体类
    • 已经有了数据库的表,来生成实体类(适用于旧项目)
      • 比如旧项目有几十个数据库的表,适合用这个来反向生成代码
      • 如果数据库就几个,还是建议自己来写
    • 新项目,还没有创建数据库的话,不建议先创建表,在来反向生成
  • 2、
    1
    2
    3
    4
    5
    //第一次生成实体类
    Scaffold-DbContext 'Server=.;Database=TestCool;Trusted_Connection=True;MultipleActiveResultSets=true' Microsoft.EntityFrameworkCore.SqlServer

    //如果后续再次运行,后面加-Force
    Scaffold-DbContext 'Server=.;Database=TestCool;Trusted_Connection=True;MultipleActiveResultSets=true' Microsoft.EntityFrameworkCore.SqlServer -Force
    自动生成数据库的类

注意

  • 1、生成的实体类可能不能满足项目的要求,可能需要手工修改或者增加配置。
    • 比如类名,方法名等
  • 2、再次运行反向工程工具,对文件所做的任何更改都将丢失。
    • 所以建议生成实体类之后,就不要再次运行。后续直接使用EF Core最好
  • 3、不建议把反向工具当成了日常开发工具使用,不建议DBFirst。

P4-4 数据库迁移
http://example.com/2024/09/18/Net Core2022教程/第4章:Entity Framework Core基础/P4-4 数据库迁移/
Author
John Doe
Posted on
September 18, 2024
Licensed under