EFCore
EF实体框架有3种类型,Data First、Model First、Code First。
2CodeFirst
2.1第一步:安装框架(Nuget包安装)
2.2第二步:生成实体文件和DBContext文件
参考文档:http://www.noobyard.com/article/p-pwmwzzpu-kz.html
有两中方式配置数据库链接字符串
第一种:下面这种通过,在program.cs中进行注册数据库连接串的方式进行添加
第二种方式:只在MyDbContext中进行配置
配置链接字符串
配置字符串在:appsetting.json中
2.3第三步:迁移数据库
迁移数据的目的,就是将写成的类 生成对应的表结构。
需在工具->NuGet包管理器->程序包管理器控制台选择执行命令所在的项目下输入如下命令
每次Migration的时候,后面可以跟上 迁移文件的名称, 每次都会在Migration文件下面生成一个迁移的版本。
迁移成功能够看见在项目根目录下添加了一个Migrations文件夹
每次修改代码以后,都需要做迁移,让代码的结构和数据库的结构保持一致。
3DBFirst
3.1第一步:安装基本的框架
这一步基本上是和CodeFirst保持一致的。
3.2第二步:执行迁移命令
根据数据库中表结构生成一个代码文件。
需在工具->NuGet包管理器->程序包管理器控制台中选择执行命令所在的项目下输入如下命令
或者是下面这种
命令格式为:Scaffold-DbContext "数据库链接字符串" EF组件名(Microsoft.EntityFrameworkCore.SqlServer/Pomelo.EntityFrameworkCore.MySql/等等) -OutputDir 输出文件夹名称
例如:
Scaffold-DbContext "Data Source=.;Initial Catalog=pinpaibao;user=sa;password=123456; Integrated Security=True;TrustServerCertificate=true" Microsoft.EntityFrameworkCore.SqlServer -OutputDir EntityModels -Force -Context MyDbConetxt
4将EF Core 项目独立出来
启动项目是EdWeb
在EdWeb的program.cs中的代码如下:
关键是带注释那一句。
5Migration相关说明:
使用迁移脚本,可以对当前连接的数据库执行编号更高的迁移,这个操作叫做“向上迁移”(Up),也可以执行把数据库回退到旧版本的迁移,这个操作叫做“向下迁移”(Down)。除非有特殊需要,否则不要删除migration文件夹下的代码。包括数据库自动生成的__EFMigrationsHistory表中的数据。如果人为删除可能会引发数据库版本混乱的情况。
6常用迁移命令说明:
6.11、增加迁移脚本
●根据最新实体,生成数据库更新脚本 (只生成脚本文件,不会操作数据库)
●执行一次迁移,创建迭代版本
●如果该命令是首次创建,则会在执行命令的项目下生成Migrations文件夹
6.22、更新数据库
●更新 脚本到数据库
●回滚 到 某个版本 (去数据库里面执行)
6.33、删除最后一次迁移的脚本
●删除最后一次迁移的脚本,此命令用于 add-migration xxx 后生成了脚本后,对该脚本的删除操作。
●注意,如果生成了多个Migration文件,需要连续执行多次
●只能删除 未应用 到数据库的脚本
6.44、Script-Migration
●生成迁移SQL的代码,此脚本生成的代码是可以直接拿到数据库执行的。不同于add-migration生成的脚本只能由EF Core执行。该命令主要用于开发完成后生成脚本,将脚本放到生产环境中执行。因为生产环境不方便执行update-database这样的更新命令,主要是不安全。
●生成版本D到版本F的SQL脚本: script-migration D F
●生成版本D到最新版本的SQL脚本: script-migration D
6.55、其他命令
EF实体框架有3种类型,Data First、Model First、Code First。
参考文档:http://www.noobyard.com/article/p-pwmwzzpu-kz.html
有两中方式配置数据库链接字符串
第一种:下面这种通过,在program.cs中进行注册数据库连接串的方式进行添加
第二种方式:只在MyDbContext中进行配置
配置链接字符串
配置字符串在:appsetting.json中
迁移数据的目的,就是将写成的类 生成对应的表结构。
需在工具->NuGet包管理器->程序包管理器控制台选择执行命令所在的项目下输入如下命令
迁移成功能够看见在项目根目录下添加了一个Migrations文件夹
每次修改代码以后,都需要做迁移,让代码的结构和数据库的结构保持一致。
这一步基本上是和CodeFirst保持一致的。
根据数据库中表结构生成一个代码文件。
需在工具->NuGet包管理器->程序包管理器控制台中选择执行命令所在的项目下输入如下命令
命令格式为:Scaffold-DbContext "数据库链接字符串" EF组件名(Microsoft.EntityFrameworkCore.SqlServer/Pomelo.EntityFrameworkCore.MySql/等等) -OutputDir 输出文件夹名称
例如:
Scaffold-DbContext "Data Source=.;Initial Catalog=pinpaibao;user=sa;password=123456; Integrated Security=True;TrustServerCertificate=true" Microsoft.EntityFrameworkCore.SqlServer -OutputDir EntityModels -Force -Context MyDbConetxt
启动项目是EdWeb
在EdWeb的program.cs中的代码如下:
使用迁移脚本,可以对当前连接的数据库执行编号更高的迁移,这个操作叫做“向上迁移”(Up),也可以执行把数据库回退到旧版本的迁移,这个操作叫做“向下迁移”(Down)。除非有特殊需要,否则不要删除migration文件夹下的代码。包括数据库自动生成的__EFMigrationsHistory表中的数据。如果人为删除可能会引发数据库版本混乱的情况。
●根据最新实体,生成数据库更新脚本 (只生成脚本文件,不会操作数据库)
●执行一次迁移,创建迭代版本
●如果该命令是首次创建,则会在执行命令的项目下生成Migrations文件夹
●更新 脚本到数据库
●回滚 到 某个版本 (去数据库里面执行)
1
2
3
4
5
6
7
8
9
//默认执行最新的脚本
Update-Database
//指定版本名称
Update-Database 【版本名称】
//指定DbContext
Update-Database 【版本名称】 -Context 【TestDbContext】
//删除表结构
Update-Database 0
Update-Database -Migration:0
●删除最后一次迁移的脚本,此命令用于 add-migration xxx 后生成了脚本后,对该脚本的删除操作。
●注意,如果生成了多个Migration文件,需要连续执行多次
●只能删除 未应用 到数据库的脚本
1
2
3
4
//默认删除 最后一次迁移
Remove-Migration
//指定DbContext
Remove-Migration 【版本名称】 -Context 【TestDbContext】
●生成迁移SQL的代码,此脚本生成的代码是可以直接拿到数据库执行的。不同于add-migration生成的脚本只能由EF Core执行。该命令主要用于开发完成后生成脚本,将脚本放到生产环境中执行。因为生产环境不方便执行update-database这样的更新命令,主要是不安全。
●生成版本D到版本F的SQL脚本: script-migration D F
●生成版本D到最新版本的SQL脚本: script-migration D
1
2
3
4
5
6
7
8
//生成 从v1迁移到v2的语句
Script-Migration -F v1 -T v2
//与上面一样的效果
Script-Migration -From v1 -To v2 -Context 【TestDbContext】
//生成 版本v1 到最新版本(v2) 的脚本
Script-Migration v1
//只生成版本 v1 (v1为第一个版本)
Script-Migration 0 v1
1
2
3
4
//删除数据库
Drop-Database
//获取有关 DbContext 类型的信息
Get-DbContext
若有收获,就点个赞吧
版权声明: 原创保护,禁止转载。申请转载请联系:281773404@qq.com