1、概述
如何生成数据库以及后来发生变化进行迁移
生成迁移的流程
- 1、创建Model相当于是要映射到数据库中的表
- 2、创建Migration迁移文件(对源码版本控制友好)
- 3、使用Migration迁移文件来生成数据库或生成脚本
执行要求
AppDbContext 这个类是在Data类库项目中,而Data项目类型是一个类库,想让EFCore生成数据库或数据迁移的话,它必须有一个可执行文件,所以它这一个项目是不能执行的。
那么就得需要依靠【Web应用程序】,它能生成可执行文件,就得通过它来生成数据库。
除此之外,Migration还所需的安装库,(这两个库在上节中已经安装)
- 1、Microsoft.EntityFrameworkCore.Design
- 2、Microsoft.EntityFrameworkCore.Tools
安装好包后需要执行一些迁移用到的命令,迁移命令需要在【程序包管理器控制台】中执行;怎么打开程序包管理器控制台:菜单中的【视图】=>【其他窗口】=>【程序包管理器控制台】
在控制台中的【默认项目】选为Data,也就是包含AppDbContext类的项目
通过执行以下命令可以查看帮助
get-help entityframework
常用的两个命令
- Add-Migration 添加一个迁移文件
- Update-Database 把迁移文件应用到数据库,执行数据库的更新或创建
2、执行迁移
add-migration inital
inital是添加迁移文件的命名(可以自定义)
执行遇到以下错误
解决方案:将WebApi应用程序设为启用项目,选中【WebApi项目】右击选择【设为启用项目】
再执行又遇到以下错误
解决方案:这个提示是说在WebApi项目中没有安装Microsoft.EntityFrameworkCore.Design,我们在WebApi项目上安装Microsoft.EntityFrameworkCore.Design包就可以了
看到以下情况这就是执行成功了
执行成功后在Data项目生成Migrations文件夹
第一个文件叫xxxx_inital文件就是我们命名的迁移文件
xxxxModelSnapshot相当于是一个快照,这个文件非常重要,不能手动去改,EFCore使用这个文件来追踪当前所有Model的变更状态
3、生成数据库或脚本
- 1、Update-Database 将数据库更新为指定的迁移,可以添加参数-verbose查看执行过程中的一些明细
- 2、Script-Migration 从迁移文件中生成一个脚本(通常在生产环境中使用)执行命令后会自动打开生成的脚本文件
看到Done结果就说明已经生成和更新数据库成功,通过【SQL Serve对象资源管理器】可以查看生成后的数据库的情况。