前言:
大家好, 今天给大家带来 ABP 第二篇的分享, 在写这篇分享的时候非常的困难, 因为发现 ABP 的框架越是深入, 难度也就越大, 而且深刻感觉到自己领域驱动开发知识的欠缺, 前段时间买了两本有关于领域驱动知识的数据, 一本是领域驱动之父 Eric Evans 写的《领域驱动设计》, 一本是 Vaughn Vernon 写的《实现领域驱动设计》, 就目前而言, 看了并没有几张, 再次默默的自我检讨 3 分钟, 下面回归正文:
在 ABP 系统框架中, 后台代码分为了几层, 以下是层级的注释:
MyABPProject.Application: 应用服务层, 包含各个应用的逻辑
MyABPProject.Core: 项目的核心层, 在领域驱动分层中, 应该属于领域层
MyABPProject.EntityFrameworkCore: 基于 EntityFrameworkCore 的封装, 连接数据库, 属于仓储基础设施层
MyABPProject.Migrator: 数据库迁移工具
MyABPProject.web.Core: 项目的展现层, 封装展现层所用到的工具
MyABPProject.Web.Host: 项目的动态 API 接口以及 Swagger
今天主要是写下数据库切换的问题, 一开始, 项目刚刚下载下来的时候, 默认使用的是 SqlServer 数据库, 按照上一篇的文章写的那样, 数据库还原 -> 运行项目, 顺风顺水可以将项目运行起来, 因为现在项目的变化, 需要更改数据库, 将由 MySQL 代替 SqlServer, 故此分为了以下的几个步骤:
首先删除 MyABPProject.EntityFrameworkCore 项目下关于 SqlServer 的一些引用类库, 需要删除的类库如下:
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Design
添加 MySQL 的引用类库, MySQL 需引用类库如下:
Pomelo.EntityFrameworkCore.MySQL.Design
Pomelo.EntityFrameworkCore.MySQL
注释 MyABPProject.Web.Host 和 MyABPProject.Migrator 项目中的 "appsettings.json" 文件下 SqlServer 数据库字符串, 新增 MySQL 数据库字符串
在整个解决方案中将字符串 "SqlServerValueGenerationStrategy" 替换成 "MySqlValueGenerationStrategy"
在整个解决方案中将字符串 "UseSqlServer" 替换成 "UseMySql"
删除 MyABPProject.EntityFrameworkCore 项目中 "Migrations" 这个文件夹下所有迁移文件
通过程序包管理控制台根据命令 "Add-Migration"XXX"" 重新生成迁移文件
生成成功后, 根据命令 "Update-Database" 还原 MySQL 数据库
重启启动项目, 即可完成!
为什么选择 "Pomelo.EntityFrameworkCore.MySql":
MySQL/MariaDB 推荐使用 Pomelo EF Core 组件, 官方引用文件目前可能存在 bug,Pomelo EF Core 同样是微软官方所推荐的.
来源: https://www.cnblogs.com/gskstudy/p/10252814.html