EFCore 【Sqlite、Mysql】数据库迁移 并使用数据库,CodeFirst、DBFirst

通过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 重载方法中会出现生成不准确的问题,比如会在时间默认值左右加上单引号,导致数据库再更新迁移到数据库时创建表出错,去掉单引号可解决这个问题,如下图

猜你喜欢

转载自blog.csdn.net/u014690615/article/details/82718251
今日推荐