一、快速搭建ABP Vnext开发环境

article/2025/9/25 15:56:08

关于Abp Vnext框架基础知识,官方文档已有很详细的阐述。此系列文章皆以实例为主,关键地方会包含博主个人的见解,所有的文章皆为原创,并且附带源码。

 

顺便说一下,我的所有示例均使用angular作为前端,数据库采用Mysql,如有其他方向的可参考官方文档进行迁移;abp具有一定的入门门槛,angular又被认为三大前端框架最难入门的,对于初学者来说可能不大友好。我们以前项目前端用的vue,奈何abp没有提供vue的模板,考虑到自己搭建abp的vue前端也需要对其angular的代码有一定了解,先硬着头皮熟悉下angular吧。所谓皇天不负有心人,等真正熟悉了angular后,发现用angular做前端一样很香,配合abp框架后,开发效率并不会比其他框架慢。

下面开始正题

由于abp vnext 5.0版本较之4.x版本做了较大的更改,为了能提前踩坑,且方便日后自己项目能顺利迁移,示例中使用版本的是5.0.0-rc.1版本

一、准备工作

1、5.0版本使用的是.net6.0,需要安装vs2022

2、安装vscode

npm版本不要太高,6.x版本就可以,有些旧的包不支持npm7,会导致install不成功

3、安装abp cli

dotnet tool install -g Volo.Abp.Cli

二、搭建环境

1、生成项目代码

打开任意目录,输入以下命令,注意添加--preview参数创建预览版本代码

abp new MyTest.First -u angular --mobile none -d ef -csf -cs "server=192.168.100.175;port=3306;database=abp_test1;uid=test;pwd=Test123$;SslMode=none" --preview

2、修改ef项目引用以支持Mysql

最新的Abp cli已支持指定生成Mysql数据库代码,在命令中添加 -dbml MySQL既可,可跳过此节

默认模板引用的是Sqlserver版本的ef模块,需要手动改为Mysql的ef模块,方法如下:

打开aspnet-core目录下解决方案,双击MyTest.First.EntityFrameworkCore项目

将图中Sqlserver引用修改为Mysql引用:

 <PackageReference Include="Volo.Abp.EntityFrameworkCore.MySQL" Version="5.0.0-rc.1" />

修改DbContextFactory文件:

 将错误处修改为如下代码:

    var builder = new DbContextOptionsBuilder<FirstDbContext>().UseMySql(configuration.GetConnectionString("Default"),MySqlServerVersion.LatestSupportedServerVersion);

 修改EntityFrameworkCoreModule文件:

 将错误处分别替换为以下代码:

using Volo.Abp.EntityFrameworkCore.MySQL;// ...typeof(AbpEntityFrameworkCoreMySQLModule),// ...options.UseMySQL();

如果每次创建新项目都要这样更改是不是很麻烦,有办法解决吗?当然有,这就需要使用自定义项目模板了,此处就不具体介绍了,以后会单独开章节说明

 3、生成数据库迁移

打开cmd,安装全局dotnet tool

# 安装
dotnet tool install --global dotnet-ef
# 更新版本
dotnet tool update --global dotnet-ef

右键MyTest.First.EntityFrameworkCore项目,从弹出菜单选择在终端打开

在shell命令行输入命令生成新的迁移

dotnet ef migrations add  -o Migrations InitDb

执行结果如下:

 常用的迁移命令如下:

# 移除当前迁移版本,如果已更新到数据库,需要先回退到上一版本
dotnet ef migrations remove
# 创建新的迁移版本
dotnet ef migrations add  -o Migrations InitDb
# 将数据库更新到最新版本
dotnet ef  database update 
# 将数据库更新到指定版本
dotnet ef  database update InitDb

 注意abp项目中可以不使用 dotnet ef  database update 来更新数据库,而是通过执行DbMigrator项目来进行数据库迁移,因为dotnet ef命令仅仅是创建库和表结构,而不会进行种子数据的插入,要想项目顺利启动,先运行DbMigrator项目是必须的

调试或运行MyTest.First.DbMigrator项目,成功后如图:

 4、启动HttpApi.Host项目

我们不使用IIS Express来启动,将MyTest.First.HttpApi.Host项目设置为启动项目,修改启动方式如下:

 启动成功后弹出api界面如下:

 5、angular前端

使用vscode 打开angular目录

点击菜单 终端->新建终端,输入npm install命令回车, 安装过程可能有点漫长,完成后执行命令npm start,完成后在浏览器输入http://localhost:4200/,如图

6、修改身份认证流程为password方式

如果不需要code方式进行认证登录,可以修改angular配置进行本地密码登录,方式如下:

打开environment.ts文件,修改oAuthConfig配置节内容如下:

  oAuthConfig: {issuer: 'https://localhost:44398',skipIssuerCheck: true,// redirectUri: baseUrl,clientId: 'First_App',// responseType: 'code',dummyClientSecret: 'MyTest!@#456',scope: 'offline_access First',requireHttps: false,},

执行npm start 启动,浏览器打开http://localhost:4200/,然后点击登录,可以看到已经不是跳转到认证服务登录了:

 这样,开发环境就搭建完毕了,管理员登录:admin/1q2w3E*

是不是感觉UI有点low了,下一节我们将介绍如何更改默认的UI框架

源码地址:快速搭建AbpVnext开发环境


http://chatgpt.dhexx.cn/article/ePE3uuc3.shtml

相关文章

“type“: “security_exception“,“reason“: “unable to authenticate user [] for REST req

在使用postman给el发送请求时报下图的错&#xff0c;意思是没有权限认证,一般通过账号和密码进行认证 在authorization里面选中basic auth,然后在右侧填入账号密码即可(一般初始账号是elastic)

引入swagger,访问swagger-ui.html报404

swagger访问404 原因&#xff1a;引入3.0.0的配置和2.x.x的配置不同 2.x.x的xml配置&#xff1a; <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></depende…

无线通信安全作业1-无线通信安全最新消息

随着苹果发布会的到来&#xff0c;我在网上最近找到了一篇《苹果无线生态系统安全性指南》的文章。 文章原作者Milan Stute&#xff0c;Alexander Heinrich&#xff0c;Jannik Lorenz&#xff0c;Matthias Hollick&#xff0c;文章来源&#xff1a;usenix.org 原文地址&#xf…

[MySQL] 基本的SELECT语句

文章目录 资料1. 查询常量计算2. 查询语句的基本语法2.1 查询全部字段2.2 查询指定字段 3. 列的别名4. 去除重复行5. 空值参与运算6. 着重号7. 查询常数8. 显示表结构9. 过滤数据10. 基本的SELECT语句练习【题目】【答案】 资料 根据【MySQL数据库教程天花板&#xff0c;mysql安…

数据结构总结+搬运

C语言与数据结构小总结&#xff0c;自我总结各处收集来的他人的总结&#xff08;很多记不清了&#xff0c;若有侵权请联系我删&#xff01; 一、常用C语言小总结 1&#xff09;数据类型、运算符与表达式 逗号运算符优先级最低&#xff0c;左操作数为先运算&#xff0c;但这是…

19c pdb克隆单机到rac,日志出现:WARNING报警处理

打开pdb后&#xff0c;警告日志出现 Violations: Type: 2, Count: 1 *************************************************************** WARNING: Pluggable Database PDB3 with pdb id - 3 is altered with errors or warnings. Please look into PDB_PLUG_IN_VIOLATIONS vie…

当工作空间下无法进行source时如何处理

当工作空间下无法进行source时&#xff0c;如下 这时是由于~/.bashrc文件下环境变量过多导致 有以下原因导致 多次进行 echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc 即会导致出现环境变量混乱 这时只需在主文件夹下 按 Ctrl …

如何破解HIT的孤岛效应,一起关于患者主索引的案例分享

从一个虚构的故事说起 故事是这样的&#xff0c;当时我们正在讨论安全架构&#xff0c;传来轻轻的敲门声&#xff0c;伴随着小刘有些胆怯的声音&#xff1a;“主任&#xff0c;这个警官找您”。小刘是我们新来的同事&#xff0c;做事很踏实&#xff0c;就是一说话就脸红。我抬…

Redis之key命令

文章目录 Redis之key命令1.keys pattern2.type3.del4.pexpireat5.rename6.persist7.ttl8.expire9.exists10.renamenx11.expireat12.pttl13.dump14.randomkey15.flushdb16.move17.pexpire18.renamex19.flushall Redis之key命令 注&#xff1a;本文是基于Ubuntu 20.04.3系统上Re…

redis根据前缀删除key

对于redis的批量删除指定key&#xff0c;有没有好的方法 redis可以用flushdb/flushall删除所有的key。用del只能根据key去删除。另外一种方式,你可以通过设置过期时间让key到期自动删除。 本回答由提问者推荐 对于redis的批量删除指定key&#xff0c;有没有好的方法 获取所有Ke…

Redis清除Key(Docker)

文章目录 查看镜像进入容器进入redis-cli身份验证查看Key清除所有key删除指定key 查看镜像 docker ps进入容器 docker exec -i -t shopxx-b2b2c-redis /bin/bash进入redis-cli redis-cli身份验证 auth "shopxx"shopxx是Redis的密码 注意使用英文双引号包裹 查看…

删除指定redis的key

1.首先进入redis 服务器 2. 在命令行输入 redis-cli -p 6379 get key 获取key 值 如出现 (error) NOAUTH Authentication required 则需要输入redis 帐号密码&#xff0c;如图 3.输入你要查找的key值&#xff0c;如出现 &#xff08;nil&#xff09;表示没有&#xff1b; 4.…

php redis删除所有key,php redis批量删除key的方法

php redis删除key的方法&#xff1a;首先使用scan命令增量迭代的方式遍历出以【XX】为前缀的key&#xff1b;然后通过unlink函数删除指定的key即可。 php redis批量删除key 摘要 使用scan命令增量迭代的方式遍历出以XX为前缀的key&#xff0c;然后删除 简介 在实际开发中&#…

redis删除指定key

redis删除指定key 1.打开redis目录并打开redis-cli.exe 如果直接输入get key会出现以下问题&#xff0c;表示需要认证&#xff0c;也就是需要登录用户 使用auth password登录即可 然后使用get key获取键的值 确认后&#xff0c;使用del key删除键中的值&#xff0c;可多个…

【Redis】批量删除Key的三种方式

Redis 中有删除单个 Key 的指令 del&#xff0c;但好像没有批量删除 Key 的指令&#xff0c;不过我们可以借助 Linux的 xargs 指令来完成这个动作 1.使用命令行批量删除redis的key 语法 ./redis-cli -h IP -p PORT -a PASSWORD -n NUM keys key* | xargs ./redis-cli -h IP…

redis删除key命令

如何批量删除redis中keys 在linux中批量操作redis中的keys的方法&#xff1a; 1.统计个数&#xff1a; redis中名称含有OMP_OFFLINE的key的个数&#xff1b; src/redis-clikeys"*OMP_OFFLINE*"|wc-l 2.批量删除 批量删除0号数据库中名称含有OMP_OFFLINE的key&#xf…

当做一件事,坚持到第二十年——Open-SkyEye强势回归!

1.故事起源 这个故事要从2002年的冬天说起。彼时北方的天气已经有些冷冽&#xff0c;一群操作系统爱好者正热切地在网络上讨论时下热门技术话题&#xff1a;如何脱离硬件限制来学习和研究操作系统的原理&#xff0c;用“软件模拟硬件”的奇妙想法随之诞生。这群技术爱好者中就…

基于SkyEye的覆盖率测试

目录 01.覆盖率测试概念 02.覆盖率测试方法 03.嵌入式软件覆盖率测试原理 04.SkyEye的重大突破 01.覆盖率测试概念 覆盖率测试是一种白盒测试手段&#xff0c;通常会在软件测试的早期阶段进行,也就是单元测试过程中。覆盖率测试这种测试方式需要对测试代码本身进行访问同时…

SkyEye 仿真

http://www.cnitblog.com/schkui/default.html?page4 SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具&#xff0c;这样就可以在没有硬件条件下来进行嵌入式系统的开发。 以下操作均在Fedora Core 1.0里通过。 Skyeye项目资源列表 http://gro.clinux.org/projects/skyeye/ …

SkyEye的使用

转载&#xff1a;http://blog.csdn.net/htttw/article/details/7226754 对于希望学习ARM汇编的同学而言&#xff0c; 购买ARM开发板进行板上实测无疑是一个有效的方法&#xff0c;不过购买ARM开发板需要一笔费用&#xff0c;而且每次测试都需要连接开发板&#xff0c;比较麻烦。…