通过alt+v+e+o组合键来唤醒程序包管理器
通过在程序包管理器控制台中输入指令:
get-help about_entityframeworkcore 查看EFCore的帮助文档。
EFCore CodeFirst
EFCore 使用Sqlite数据库迁移的步骤:
第一步:安装依赖nuget包:
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Sqlite
Microsoft.EntityFrameworkCore.Tools
第二步:创建DbContext,并声明DbSet
创建控制台项目后,创建一个DbContext的子类,把需要创建的DbSet全部声明,并重载OnConfiguring方法,使用UseSqlite()指定数据库链接。
第三步:使用多个迁移相关指令生成数据库
指令1:EntityFrameworkCore\Add-Migration mysqlte 来生成迁移文件
指令2:EntityFrameworkCore\Update-Database mysqlte 来生成具体的数据库,sqlite.db就是生成的数据库文件
mysqlte为自定义名称
第四步:使用生成的sqlite数据库
右键sqlite.db并在生成操作上设置为无,在复制到输出目录上设置属性为始终复制,sqlite数据库从一连接就会创建空的数据库文件,可以通过这个操作来覆盖默认生成的文件并使用。
EFCore 使用Mysql数据库迁移的步骤:
第一步:下载需要的nuget包:
Microsoft.EntityFrameworkCore
Pomelo.EntityFrameworkCore.MySql
Microsoft.EntityFrameworkCore.Tools
第二步:创建DbContext
和sqlite一样,但需要重新制定mysql的数据库链接,
第三步:使用EF迁移相关的指令
指令1:EntityFrameworkCore\Add-Migration mysql
指令2:EntityFrameworkCore\Update-Database mysql
EFCore DBFirst,从数据库中生成实体和DbContext到程序中。
输入指令:
EntityFrameworkCore\Scaffold-DbContext "Data Source = localhost; Database = mydb; User ID = username; Password = mypwd; SslMode = None;" "Pomelo.EntityFrameworkCore.MySql"
第一坑
在创建数据库时,有时候会需要一个创建时间字段,且这个字段默认是当前时间,在数据库中定义好后,使用上述命令,生成实体到程序中时,在DbContext 的 OnModelCreating 重载方法中会出现生成不准确的问题,比如会在时间默认值左右加上单引号,导致数据库再更新迁移到数据库时创建表出错,去掉单引号可解决这个问题,如下图