更换Mysql数据库-----基于Abo.io 的书籍管理Web应用程序
之前公司一直使用的是ASP.NET Boilerplate (ABP),但是当解决方案变得很大时,项目启动就变得非常慢,虽然也想了一些办法,将一些基础模块做成Nuget包的形式,让整个解决方案去引用。但是整个项目还是很臃肿,各个项目之间的耦合性太强,很难将其拆开;无法进行微服务的部署,扩展性差。之后,选择,Abp的vnext版本,优点:
1. 其新的ABP框架可方便的开发微服务并使它们相互通信。亦可作为微服务单独部署,或者可以嵌入到单个应用程序中;
2. 模块化。最明显的就是更加模块化,使项目更加清晰明了,设计更合理;
3. 更多可扩展性。新的ABP框架为内置服务提供了更多的扩展点和覆盖的能力;
4. 支持关系型和非关系型数据库,Redis作为分布式缓存,使用RabbitMQ作为事件总线的消息处理方式,使用Quartz/HangFire作为定时任务的处理,引入可了IdentityServer4服务;
接下来呢,会从 https://abp.io/上下载 官网构建一个名为 Acme.BookStore 的用于管理书籍及其作者列表的ABP应用程序
1、首先进入界面 https://docs.abp.io/zh-Hans/abp/latest/Tutorials/Part-1?UI=MVC&DB=EF,然后根据偏好选择下载,我们以第一个为例

2、官网的代码放在github上,点击abp-samples,就可以看到它的所有解决方案,BookStore-Mvc-EfCore 就是我们今天要更改的解决方案


3、使用Git工具克隆本项目
git clone https://github.com/abpframework/abp-samples.git

4、稍等一段时间后,使用VS Code打开本项目(VS 2019不支持,想使用的升级到VS 2022),在工具中添加 vscode-solution-explorer 组件

5、点击解决方案,右键选择Build,对项目进行包还原,从解决方案的结构上看,就能看到其清晰的分层,解决方案中的项目及依赖关系.


6、接下来点击Acme.BookStore.EntityFrameworkCore,找到它的Acme.BookStore.EntityFrameworkCore.csproj文件,更换Nuget包,解决方案之前使用的是SQLServer,要将其更改为Mysql,之后找到BookStoreDbContextFactory和BookStoreEntityFrameworkCoreModule文件,更改其引用的地方



7、重新修改数据库连接字符串,并删除Migrations文件夹下的文件
找到*.Web 和 *.DbMigrator中的appsettings.json文件对数据库连接字符串进行修改
"Default": "Server=localhost;Port=3306;Database=数据库名字;Uid=root;Pwd=数据库密码;Convert Zero DateTime=True"
8、在*.EntityFrameworkCore目录下执行命令进行数据库迁移,之后就可以在数据库中看到所有的表
dotnet ef migrations add Init
dotnet ef database update
9、所有准备都已完成,运行应用程序,选中*.web,右键点击Run,报错启动不了,通过查找,发现在wwwroot下没有libs文件
Could not find the bundle file '/libs/abp/core/abp.css' for the bundle 'LeptonXLite.Global'!
安装ABP CLI, 用于自动执行基于 ABP 的解决方案的一些常见任务
dotnet tool install -g Volo.Abp.Cli
之后安装libs
abp install-libs

再次进行Run,成功啦!!以admin作为用户名和1q2w3E* 作为密码登录到应用程序,登录成功后,就可以看到书籍管理功能


更换Mysql数据库-----基于Abo.io 的书籍管理Web应用程序的更多相关文章
- 极简SpringBoot指南-Chapter04-基于SpringBoot的书籍管理Web服务
仓库地址 w4ngzhen/springboot-simple-guide: This is a project that guides SpringBoot users to get started ...
- windows下更换MySql数据库数据文件夹位置
详细解决地址 ,感谢博主 :https://blog.csdn.net/u010953266/article/details/56499361 概述 由于更换硬盘,系统重新安装了一遍,原来的mysq ...
- mysql数据库基于linux的安装步骤及数据库操作
一.数据库安装 Ubuntu上安装MySQL非常简单只需要几条命令就可以完成. sudo apt-get install mysql-server sudo apt-get isntall mysql ...
- 【第二章】MySQL数据库基于Centos7.3-部署
一.MySQL数据库的官方网址: https://www.mysql.com/ https://www.oracle.com/ http://dev.mysql.com/doc/refman/5.7/ ...
- mysql数据库基于LVM快照的备份
lvm-snapshot: 基于LVM快照的备份 1.事务日志跟数据文件必须在同一个卷上 2.创建快照卷之前,要请求mysql的全局锁,在快照创建完成之后释放锁 3 ...
- Django Mysql数据库-基于双下划线的跨表查询
一.基于双下划线的跨表查询 Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系.要做跨关系查询,就使用两个下划线来链接模型(mode ...
- 更换mysql数据库的datadir目录
更换过程如下: 1.新建指定的datadir目录,这里举例如:E:/mysql_datadir/data. 2.关闭mysql57服务器. 3.将原来的datadir目录下面的所有文件拷贝到E:/my ...
- Linux_CentOS中的MySQL 数据库的安装调试、远程管理
官网查看最新 MySQL 安装包 https://dev.mysql.com/downloads/repo/yum/ 下载 MySQL 源的安装包 wget http://dev.mysql.com/ ...
- 基于tomcat-jQ-springMVC-bootstrap的公司产品管理WEB应用
管理员登录后台以后才能操作 ,权限管理只有一个管理员, 系统的主要作用是查看所有的 “公司列表”, 并查看该公司的”产品“, 用户可以对该公司的产品进行添加或者删除, 添加或者删除公司等 , 添加产品 ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(四):安装MySQL数据库
基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...
随机推荐
- CF1167G题解
CF1167G题解 传送门 简化题意:数轴上有 n 个不相交且处于坐标为非负整数的单位正方形,给 m 个询问点,求出把这个点右侧的数轴逆时针旋转至与左侧相交时的角度. 首先,碰撞时只能有以下两种情况: ...
- Java面试——不安全的集合类
Java 中有许多的集合,常用的有List,Set,Queue,Map. 其中 List,Set,Queue都是Collection(集合),List<String>中<>的内 ...
- Qt源码阅读(四) 事件循环
事件系统 文章为本人理解,如有理解不到位之处,烦请各位指正. @ 目录 事件系统 什么是事件循环? 事件是如何产生的? sendEvent postEvent 事件是如何处理的? 事件循环是怎么遍历的 ...
- Java:如何在PowerPoint幻灯片中创建散点图
散点图是通过两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式.散点图将序列显示为一组点,值由点在图表中的位置表示,类别由图表中的不同标记表示,通常用于比较 ...
- Linux 端口及防火墙常用命令
Linux 端口及防火墙操作 查看端口操作 一. netstat命令 -t (tcp) 仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化为数字 -l ...
- Unity3D中的Attribute详解(六)
本文将重点对Unity剩下常用的Attribute进行讲解,其他不常用的Attribute各位可以自行去官方文档查阅. 首先是UnityEngine命名空间下的. ColorUsage,这个主要作用于 ...
- 为什么 Python、Go 和 Rust 都不支持三元运算符?
在编程时,我们经常要作条件判断,并根据条件的结果选择执行不同的语句块.在许多编程语言中,最常见的写法是三元运算符,但是,Python 并不支持三元运算符,无独有偶,两个最热门的新兴语言 Go 和 Ru ...
- [操作系统/Linux]磁盘分区
0 基本概念1: 盘片/盘面/磁头/扇区/磁道/柱面 本小节摘自: 硬盘基本知识(磁头.磁道.扇区.柱面) - 博客园 一张磁盘并不是拿过来直接用,需要先分区. 磁盘本身有很多sector(扇区).c ...
- [MAUI 项目实战] 手势控制音乐播放器(二): 手势交互
@ 目录 原理 交互实现 容器控件 手势开始 手势运行 手势结束 使用控件 拖拽物 创建pit集合 项目地址 原理 定义一个拖拽物,和它拖拽的目标,拖拽物可以理解为一个平底锅(pan),拖拽目标是一个 ...
- CSS样式中颜色与颜色值的应用
使用CSS描绘页面样式时,颜色是其中不可或缺的,无论是对文本.背景还是边框.阴影,我们都写过无数代码用来增添颜色.而为了让网页的色彩表现更出色,我们很有必要完整梳理下CSS中的色彩. 要讲清楚CSS中 ...