Abp Vnext
文章平均质量分 58
针对AbpVnext 开发所涉及到的前后端相关所有链路环节
liuyonghong159632
软件工程专业:欢迎交流学习:qingwatianya
2010-2018:西安某互联网公司,任职技术总监,负责公司整体技术架构设计规划及运维工作,带队App项目用户规模60万+,项目收益流水7000万+。
2020-2021:宁波某研究院,巡检机器人项目组,产品经理。
展开
-
【Abp VNext】实战入门(七):【2】xxx.Web网站层 —— API接口异常全局捕捉,返回简化错误信息
这里写自定义目录标题一、前言二、解决方案1、解决方案1:2、解决方案2:三、总结一、前言今天突然发现一个问题,xxx.Application应用层中的方法,如果直接抛出异常(如:throw new Exception(“手动抛出异常”); )后端控制台可以看到详细错误信息,前端接口调用却只能看到500 internal error 内部错误,看不见详细错误信息,对接接口的伙计一脸懵逼。二、解决方案1、解决方案1:1、在xxx.web网站项目的xxxWebModule.cs 中添加如下配置,把异常信原创 2021-11-14 00:04:15 · 2645 阅读 · 0 评论 -
【Abp VNext】实战入门(十四):【1】应用层 —— 对象间循环递归引用,导致Json序列化异常
文章目录一、前言二、对象递归引用Json序列化异常案例1、领域层对象关系:2、应用层对象关系:3.1、关联查询方式:AbpVnext3.2、关联查询方式:Abp4、查询结果Json序列化异常:5、解决方案:三、总结一、前言应用层涉及到从数据库提取数据记录,转换成对应的DTO,然后框架自动Json序列化,返回前端;在Domain领域层创建的领域对象DO通常带有关系绑定,1:1 或者1:N , 自然Application应用层的数据传输对象 DTO也会带有与之对应关系的DTO;当查询A记录 想要把A原创 2021-06-05 19:46:44 · 1041 阅读 · 0 评论 -
【Abp VNext】实战入门(十三):【1】领域层 —— 添加自定义仓储服务
文章目录一、前言二、自定义仓储步骤1、在Domain领域层添加自定义仓储接口申明2、在EntityFrameworkCore基础设施层实现接口服务3、在Application应用层 注入并使用服务三、总结一、前言项目中通常习惯性的针对每一个实体在应用层创建继承自现有的CrudAppService服务,来获得标配的增删改查接口功能,但有的时候需要用自定义仓储服务来个性化的数据操作需求;如:我们需要在商品Goods表中牛奶Index=2后面插入一条香蕉记录Index=3,所有商品记录通过Index字段原创 2021-05-23 15:20:12 · 932 阅读 · 0 评论 -
【Abp VNext】实战入门(十三):【2】领域层 —— 批量更新数据库记录
文章目录一、前言二、批量操作数据库记录方案1、添加开源插件:2、批量更新记录Index:三、总结一、前言EntityFrameWork 中没有批量操作数据库的方法,如:批量更新、批量删除等…可以通过DbContext来执行Sql语句,不是特别优雅和推荐;优雅的方式当然是使用开源的现成轮子…二、批量操作数据库记录方案1、添加开源插件:nuget 搜索添加 Z.EntityFramework.Plus2、批量更新记录Index: /// <summary>原创 2021-05-23 15:35:19 · 1216 阅读 · 0 评论 -
【Abp VNext】实战入门(十三):【3】领域层 —— 添加领域事件
文章目录一、前言二、领域事件添加过程1、添加领域事件类:xxxEventHanlder.cs2、添加插入事件捕捉:三、总结一、前言场景案例:做后端开发,经常涉及到这样一种场景: 我需要新增一条用户记录,然后需要为用户新增一条收益统计记录,然后还需要给用户发送一封欢迎邮件、和一条欢迎短信、以及其他各种事情;常规操作:在应用层新增用户的时候,逐项添加各种功能代码;存在问题:这样带来的问题就是,整个操作过程不够单一,关心的重点应该在记录本身的插入而非其他操作,其他操作有可能比较耗时,使得用户从注册到提原创 2021-05-23 15:58:28 · 695 阅读 · 0 评论 -
ABP .net core2.0 Json 日期格式 和 驼峰设置
问题描述:最近采用ABP框架 开发小程序,发现自动生成的动态Web API 接口返回的Json数据格式有两个问题:1、日期格式问题如:"creationTime": "2018-11-28T19:18:00", //中间多了一个T2、对象属性问题如: { "resourceType_Code": "Platform_MsgRemark", ...原创 2018-11-28 23:57:10 · 2482 阅读 · 4 评论 -
【Abp VNext】实战入门(五):【13】前端管理界面 vue-element-admin —— 左侧菜单自定义图标及图标大小控制
一、前言:使用 vue-element-admin 避免不了的是自定义左侧菜单图标以及控制图标大小,今天就记录一下如何操作。二、操作步骤:去阿里图标库查找需要的图标,然后下载对应的SVG文件:www.iconfont.cn把.svg文件拷贝到项目根目录:icons/svg在路由router/index.js 中配置新增的svg图标名:meta:{icon:‘home’}这样处理后已经可以在左侧菜单中显示对应图标了,但是有三个问题要解决:自定义图标太小不受控制:自定义图原创 2021-02-28 15:39:12 · 3450 阅读 · 3 评论 -
【Abp VNext】实战入门(三):【4】控制台应用程序 —— 全局异常错误事件捕捉
文章目录一、前言二、操作步骤1、创建.netcore 控制台应用程序:2、添加全局异常事件捕捉方法:3、日志保存结果预览:三、总结一、前言上一篇讲解了Seriallog日志记录这一篇结合日志记录,讲解如何全局捕捉并保存错误异常事件,方便Bug记录分析;二、操作步骤1、创建.netcore 控制台应用程序:Main方法代码如下:public static async Task<int> Main(string[] args){ //1、日志输出配置原创 2021-05-09 20:32:36 · 796 阅读 · 0 评论 -
【Abp VNext】实战入门(三):【3】控制台应用程序 —— Seriallog日志记录
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是原创 2021-05-09 20:07:57 · 1511 阅读 · 1 评论 -
【Abp VNext】实战入门(十一):【3】基本操作 ——.NetCore Web网站Api发布部署及如何在局域网电脑上访问
文章目录一、前言二、步骤1、VS2019编译发布项目:2、直接启动服务:默认地址端口访问3、带参启动服务:指定地址端口访问三、总结一、前言上一章讲解了在VS编译调试的时候如何通过局域网访问.netcore 网站API服务;这一章主要讲解,.netcore 最新版本编译、发布、部署以及如何通过局域网访问服务;测试环境:VS2019+.net5.0+Win10系统二、步骤1、VS2019编译发布项目:新版的.net core 项目编译后 会生成对应的xxxWeb.exe 服务程序ap原创 2021-05-07 11:24:08 · 1555 阅读 · 5 评论 -
【Abp VNext】实战入门(五):【14】前端管理界面 vue-element-admin —— 左侧菜单对接用户角色动态显示
文章目录一、前言二、左侧菜单动态显示原理三、总结一、前言项目已经进展3个月,今天才来处理左侧菜单和用户角色之间的对应关系;比如:管理员登录可以看到用户管理菜单,普通用户登录看不见这个菜单;虽说vue-element-admin中已经带有相关角色菜单动态显示功能,但是说简单也挺复杂的,你得要先看懂代码,然后你才能动手去改,里面代码逻辑嵌套比较深,特别是在 Vuex.Store 状态数据存放类中 各种 mutations actions 还有接口调用也混在里面很蛋疼 一看代码结构完全不想动手去改原创 2021-05-02 21:08:37 · 1315 阅读 · 0 评论 -
【Abp VNext】实战入门(十一):【2】基本操作 —— 如何修改用户账号密码及其他信息
文章目录一、前言二、自带的用户管理接口1. 通过Swagger查看自带的用户操作接口;2. 重点讲解用户更新接口:/api/identity/users/{id}3. 特别注意事项 : concurrencyStamp 时间戳字段赋值4. 接口测试截图预览三、总结一、前言在文章 【Abp VNext】实战入门(十二):【1】角色权限管理 —— 后端对应的框架结构表讲解 中将用户、角色、权限、功能之间的关系以及对应的后端数据库表架构; 还有AbpVnext Web项目中 自带的集成好的用户角色管理;原创 2021-05-02 15:47:35 · 2172 阅读 · 1 评论 -
【Abp VNext】实战入门(十二):【2】角色权限管理 —— 添加自定义权限条目
文章目录一、前言二、权限如何使用三、如何定义自己的权限:四、总结一、前言上一张讲解了AbpVnext自带的用户、角色、权限、及用户角色授权对应的后端框架表结构,这章主要讲讲在AbpVnext中如何添加自定义权限条目事项;二、权限如何使用using System;using System.Collections.Generic;using System.Threading.Tasks;using Microsoft.AspNetCore.Authorization;using Volo.A原创 2021-05-01 22:28:05 · 3943 阅读 · 0 评论 -
【Abp VNext】实战入门(十二):【1】角色权限管理 —— 后端对应的框架结构表讲解
文章目录一、前言二、默认用户管理、角色管理界面预览三、AbpVnext 后端结构表讲解1. 用户表(abpusers):2. 角色表(abproles):3. 用户角色表(abpuserroles):4. 具体权限授权记录表(abppermissiongrants):5.具体功能表:四、总结一、前言搞开发必然离不开角色权限环节,Abp Vnext 项目已经默认集成了角色权限管理模块,去官网下载模板项目,运行起来采用默认账号密码登录即可看到用户管理和角色管理功能;二、默认用户管理、角色管理界面预览原创 2021-05-01 21:56:53 · 3698 阅读 · 0 评论 -
【海康威视】前端开发:【3】IE浏览器无法预览视频画面--对象不支持“HWP_GetLocalConfig“属性或方法
一、前言基于IE浏览器二次开发海康威视后台管理,在新电脑上配置服务的时候经常莫名其妙的报错:对象不支持"HWP_GetLocalConfig"属性或方法,然后接着报错Unhandled promise rejection TypeError:对象不支持"HWP_SubmitHttpRequest"属性或方法,WebComponents.exe 插件也安装了,用海康自带的后台管理也能正常登录预览视频(注:偶尔会自带后台管理会提示安装插件,但是安装后二次开发版本还是预览不了);调试海康 3200行 的we原创 2021-04-27 22:26:31 · 5847 阅读 · 0 评论 -
【Abp VNext】实战入门(十一):【1】基本操作 ——VS编译调试时 .NetCore Web网站Api如何在局域网电脑上访问
一、前言最近使用 AbpVnext .NetCore 开发项目,网站启动后可以通过 http://localhost:44349 或者http:127.0.0.1:4349正常访问;但是通过本机局域网IP http:192.168.1.101:44349 却无法访问,防火墙里面44349端口入栈规则也配置了;这是因为程序启动监听在http:localhost:44349上面;二、解决方案打开xxx.web 项目下 Properties/launchSettings.json 文件添加一个额外配原创 2021-04-27 17:57:51 · 866 阅读 · 2 评论 -
【Abp VNext】实战入门(四):Windows系统服务制作
前言:做开发经常会遇到守卫进程一类的需求,通过守卫进程去保证某个服务程序的正常执行和启动;这个时候针对Windows平台守卫进程,首选的肯定是Windows系统服务,先保证系统服务随系统启动而启动,然后再去启动应用进程服务。Windows系统服务制作流程:改天空了再补 最近好累...原创 2021-03-20 20:34:45 · 705 阅读 · 0 评论 -
【Abp VNext】实战入门(五):【12】前端管理界面 vue-element-admin —— 【客户端】全局使用WebSocket
一、前言:API接口每次调用都要走一个完整的握手流程,服务端不能通过API主动向前端客户端发送信息; 针对频繁轮询的情况比较消耗资源;WebSocket只需建立一次连接,并保持长连接状态,客户端服务端可双向通信,通信简单快捷,资源消耗小。WebSocket通常用于即时通讯方面的需求。二、前端全局使用WebSocket:每个页面可以单独创建WebSocket连接,但是没有必要去做重复操作,所以先把牌坊立好:咱要全局使用WebSocket服务端后续写篇文章讲一下;1、根目录创建 /js_sdk/w原创 2021-02-23 17:20:55 · 1993 阅读 · 1 评论 -
【Abp VNext】实战入门(五):【11】前端管理界面 vue-element-admin —— 使用阿里字体图标库 iconfont.css
一、前言:项目中经常需要使用图片图标,很多图片是完全可以采用字体图标来替代,字体图标具有明显的优势:矢量图、可以任意调节大小、任意改变颜色、体积小、管理方便等优点;vue-element-admin 采用的是 element-ui 框架 已具备很多现成图标,具体内容看连接: element-ui 自带图标。如果这些图标还不够你用可以前往阿里字体图标库搜索免费开源的海量图标:阿里字体图标库二、具体操作方法:1、阿里字体图标库地址:https://www.iconfont.cn2、注册阿里账号-&原创 2021-02-19 18:16:37 · 861 阅读 · 1 评论 -
【Abp VNext】实战入门(五):【10】前端管理界面 vue-element-admin —— 以同步的方式调用接口并获得返回结果
一、前言:常规的作业方式都是在接口调用结果中进行下一步操作,但是这样做可能会出现,很多层逻辑嵌套使业务变得复杂;嵌套多了之后 this.xxxMethod() 访问外部的资源属性或者方法会访问失败,应该跟vue本身机制有关,通常要在最外层 声明 let _this =this; 然后在多级内部嵌套中 使用 _this.xxxMethod(); 才能访问; import Device from '@/business/device.js' Device_Load() { Devic原创 2021-02-18 18:03:46 · 1082 阅读 · 0 评论 -
【Abp VNext】实战入门(五):【9】前端管理界面 vue-element-admin —— Router路由跳转及参数传递
一、前言:除了常规的通过标签link形式跳转页面的方法,vue-element-admin 项目中已经自带路由封装,可以在代码中手动控制页面路径跳转, 通常只需要知道如何跳转页面,如何传递参数即可。配合底层路由拦截功能,参考:【Abp VNext】实战入门(五):【2】前端管理界面 vue-element-admin —— 路由拦截优化改造二、必须的页面路径申明配置:描述:所有页面要进行展示都必须先在路由页面中先行声明(名称、路径…)1、在根目录router/index.js 中配置写好的vue页原创 2021-02-18 13:57:17 · 3032 阅读 · 0 评论 -
【Abp VNext】实战入门(五):【7】前端管理界面 vue-element-admin Get Post 方法传参 路径参数传递
前言:前端框架 vue-element-admin 调用后 Abp Vnext 后端接口服务 参数传递方法总结,针对get 和非 get 有点儿不一样;数据传递格式:1、abp vnext 要求数据传递格式为 Content-Type:application/x-www-form-urlencoded2、在接口请求类 request.js 请求拦截中 为所有接口请求添加 Content-Type//http/request.js// 1、添加请求拦截service.interceptors.r原创 2021-02-17 18:08:26 · 2036 阅读 · 0 评论 -
【Abp VNext】实战入门(五):【5】前端管理界面 vue-element-admin —— 登录获取 Access_Token 优化
前言:vue-element-admin 自带登录模式中真的有点儿恶心人,为什么恶心人呢,分析一下:1、接口方式采用axios封装调用没问题:utils/request.js;2、数据缓存采用vuex插件存储也没有问题:store/moudles/user.js;恶心就恶心在 它把调用登录接口相关的功能写到了 缓存类user.js中,然后在里面各种Mutations 和 Actions 调用 简单的登录逻辑变得异常复杂化,如下为缓存类中的方法:const mutations = { SET原创 2021-02-17 17:47:17 · 803 阅读 · 0 评论 -
【Abp VNext】实战入门(五):【8】前端管理界面 vue-element-admin —— 采用 IFrame加载本地.html文件
前言后台管理项目中需要用到加载本地的静态 HTML页面,理论上是没问题提但实际上出现了诡异的现象;诡异现象:1、如果填写外部完整链接如:http://www.xxx.com 是可以正常展示的;2、但是填写内部静态页面路径出现诡异现象如:<iframe id=“01” src="/src/htmls/index.html" />问题分析:测试了半天发现,原来是这个访问路径无法访问导致的,但是这个路径确实存在,为何不能访问呢?是因为 静态HTML页面放错了地方,不应该放在Src目录原创 2021-02-16 19:20:25 · 1007 阅读 · 1 评论 -
【Abp VNext】实战入门(九):DbMigrator 自定义项目所需种子数据
前言:项目开发过程中难免会涉及到一些业务相关的基础数据,我们称之为种子数据,主要为了方便测试功能或者展示效果;常规做法是手动到数据库表创建数据,但是随着表结构更改或者数据清空后,又要重新录入基础数据,很是麻烦;采用CodeFirst 通过建模领域对象生成实体表结构的方式,为了便于种子数据的存储和管理,一个好的解决方案显得极为重要,Abp Vnext 项目模板中xxx.ProjectName.DbMigrator 项目就是用于种子数据初始化到数据库的控制台程序;具体步骤:1、 在xxx.Domain原创 2021-02-08 22:12:13 · 1935 阅读 · 4 评论 -
【Abp VNext】实战入门(八):【1】领域层新增简单领域对象并更新到数据(CodeFirst)
前言前面1到12篇文章基于Abp VNext 和 vue-element-admin 前后端架构相关基础功能进行了尝试和论证,接下来开始业务相关的操作。领域建模步骤:1、新增领域对象 商品(属性:编号、名称、创建时间)AoRuiDe.GasMonitoring.Domain 项目根目录新增 Goods/Good.csnamespace AoRuiDe.GasMonitoring.Goods{ //商品领域对象 public class Good : Entity<int>,原创 2021-01-24 18:25:28 · 1348 阅读 · 1 评论 -
【Abp VNext】实战入门(五):【3】前端管理界面 vue-element-admin —— Vuex状态缓存 自动持久化本地存储
一、前言前端开发经常需要用到采用 Vuex 来缓存当前会话信息,会话信息当页面刷新,浏览器关闭 信息就会丢失;很多时候需要将当前会话缓存信息持久化存储到本地长久保存,可用通过localStorage手动操作:localStorage.getItem(key),//获取本地存储localStorage.setItem(key, value),//本地存储localStorage.removeItem(key) //删除如果有一种方法可以将 Vuex 的缓存信息自动持久化保存到本地,以及在浏览器刷新原创 2021-01-10 22:32:31 · 1236 阅读 · 0 评论 -
【Abp VNext】实战入门(五):【6】前端管理界面 vue-element-admin —— 通过Access_Token获取用户基础信息
一、前言通过账号密码信息从 https://localhost:44349/connect/token 获取的结果只有Token相关信息,没有用户基础信息,连用户编号ID都没有;可用使用token从 https://localhost:44349/connect/userinfo 获取用户基础信息; 这个接口也是隐藏的没有在 Swagger中显示二、步骤1、request.js 接口请求中添加Content-Type:request.headers['Content-Type'] = 'appli原创 2021-01-10 19:08:40 · 1201 阅读 · 1 评论 -
【Abp VNext】实战入门(五):【2】前端管理界面 vue-element-admin —— 路由拦截优化改造
一、前言项目根目录中的 permission.js 存放的是路由拦截代码,同时在 main.js 中全局引入 import ‘@/permission’ ;每次页面跳转前都能有效拦截,根据自己的业务有所作为;不得不说这个 permission.js 取名不是很贴切 路由拦截就路由拦截,取名为permission 授权许可,可能就是为了体现角色权限动态页面路由加载吧;在每次路由的时候检测路由白名单、Token是否存在就可以了,没必要再去检测用户基础信息 多余操作,当然根据实际需求而定;关键是这块的代原创 2021-01-10 17:10:59 · 1428 阅读 · 1 评论 -
【Abp VNext】实战入门(七):【1】xxx.Web网站层 —— API接口服务添加跨域访问支持
一、前言通过命令 abp new AoRuiDe.GasMonitoring 或者直接从官网下载的项目,默认没做跨域配置,会导致在前后端分离的网页中去访问后端接口的时候报错“Access-Control-Allow-Origin”,但是通过Postman测试接口的时候不会报错。二、添加跨域配置1、添加跨域配置:MVC网站项目添加跨域配置:AoRuiDe.GasMonitoring.Web/appsettings.cs"App": { "SelfUrl": "https://localhos原创 2021-01-09 23:39:46 · 1859 阅读 · 1 评论 -
【Abp VNext】实战入门(六):VSCode 前端开发常用功能插件(格式化、自动补全、JS智能提示、Class智能提示、Path智能提示)
一、前言:采用VSCode开发前端的时候 为了有个良好的开发体验我们需要:错误自动提示、html JS 缩进格式化功能;借助 VSCode 插件市场的插件即可满足需求。二、自动格式化配置:1、打开VSCode插件市场:Ctrl + Shift + X2、安装插件:ESlint、Vetur3、设置代码保存时自动格式化功能:菜单“文件”->“首选项”->“设置”:右上角 打开设置Json文件4、添加开启自动保存配置: 新版本默认用这么一条配置就够了...原创 2021-01-09 16:58:25 · 3801 阅读 · 0 评论 -
【Abp VNext】实战入门(五):【1】前端管理界面 vue-element-admin —— API基础接口路径BaseUrl配置
一、前言:vue-element-admin是一个后台前端解决方案,它基于vue和element-ui实现。它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。相信不管你的需求是什么,本项目都能帮助到你。由于Vue-Element-Admin 默认源代码功能太多,对于初学者学习不友好,项目正式搭建的时候也比较繁琐,所以采用 实际上采用的是 基础模板项目:Vue-Admin-Temp...原创 2021-01-08 01:06:36 · 2068 阅读 · 0 评论 -
【Abp VNext】实战入门(五):【4】前端管理界面 vue-element-admin —— 登录获取 Access_Token
一、前言:接口没有权限,无异于裸奔,风险很大!AbpVnext 默认权限获取接口 在Swagger中没有显示,这个有点儿坑爹,找了好久才在网上找到!二、获取Token:1、接口地址:https://localhost:44349/connect/token2、接口需要以:application/x-www-form-urlencoded 的方式调用;3、接口参数://接口参数{ client_id: 'GasMonitoring_App', //client_se..原创 2021-01-07 01:43:34 · 3434 阅读 · 4 评论 -
【Abp VNext】实战入门(三):【2】控制台服务 —— 实现 WebSocket 通讯服务
后续补充原创 2021-01-07 01:06:02 · 1487 阅读 · 0 评论 -
【Abp VNext】实战入门(三):【1】控制台服务 —— 调用应用层领域层服务
一、前言:项目需求有时候需要用到控制台服务去完成某些作业,直接引用应用层 领域层服务即可;二、下载AbpVnext控制台服务:命令:abp newAoRuiDe.GasMonitoring.ConsoleService -t console三、控制台服务配置:1、引用 应用层、领域层、仓储层 三个项目:AoRuiDe.GasMonitoring.Application:【Abp VNext】实战入门(二):应用层服务创建、简单服务、继承CrudAppService增...原创 2021-01-07 01:03:38 · 1950 阅读 · 5 评论 -
【Abp VNext】实战入门(二):应用层服务创建、简单服务、继承CrudAppService增删改查服务
应用层: AoRuiDe.GasMonitoring.Application一、创建简单应用层服务:1、应用层 根目录新增AbpUserAppService.cs [AllowAnonymous] //默认不做权限控制 public class AbpUserAppService: ApplicationService { public string Test(string value) { return val..原创 2021-01-05 00:39:04 · 2752 阅读 · 1 评论 -
【Abp VNext】实战入门(一):创建项目、MsSql/MySql配置、表结构数据迁移、启动项目
一、简介:Abp VNext 是继Abp后完全基于Asp.net Core开发的开源项目,完全模块化组件化,比Abp更简洁更轻盈,支出多租户,聚焦微服务;二、基础信息:1、官方网站:https://abp.io/2、官方文档:https://docs.abp.io/3、官方模板生成下载地址:http://abp.io/get-started4、源代码地址:https://github.com/abpframework/abp/5、基于Abp Vnext 开发的开源项目地址..原创 2021-01-02 00:05:48 · 7006 阅读 · 1 评论 -
【ABP】自动保存功能坑不可没 扪心自问一千遍我到底错哪里了 没感动到测试的妹子 把自己感动哭了
业务场景:实际业务场景比较复杂,简单举个相似的例子1、A表(提问表)结构:(Id,Title(标题),DefaultValue(默认答案) );5个问题 5条记录2、B表(答案表)结构:(Id,user_Id(用户编号), A_Id(A表的问题编号),Value(答案) );一个用户 5个问题对应的5个答案3、前端页面需要提取某个指定的用户答案列表:[ B_Id,A_Title,B_Value ]由于需要的这3个字段结构 刚好跟A表的结构吻合于是想直接 提取A表数据,然后补充5个问题原创 2020-09-12 21:57:45 · 918 阅读 · 2 评论 -
【ABP】领域事件异常(Cannot access a disposed object)无法访问已释放对象
异常场景:在应用层或者领域层的某个方法 MethodA() 对 A 表进行了增删改查操作,同时在 领域事件EventHanlderA 中绑定了A表的增删改查对应的领域事件,如果在MethodA方法和领域事件中用到了一个相同的领域服务DomainServiceA,这种场景下MethodA中的方法可以正常执行,但是领域事件中就会因为DomainServiceA已被释放而提示异常:具体原因和ABP的架构有关系,有兴趣的朋友可以去看看源代码!异常内容:Cannot access a disposed obje原创 2020-09-05 20:26:01 · 5283 阅读 · 2 评论 -
【ABP】如何使用自带的配置表(abpsettings)对宿主、租户或者租户用户进行个性化数据配置
使用场景:系统经常需要用到一些共性或者个性化的数据配置,简单分为系统应用配置和业务应用配置系统应用配置:针对系统本身使用,基本上不会经常改动,如:环境变量、数据库链接配置 通常配置在appsettings.json中;业务应用配置:针对业务逻辑方面的一些个性化配置,如:用户打开当前网站选择的语言配置,以后打开默认上次选择的语言,这类个性化数据放在用户表感觉很违和,别扭,放在统一的配置表里面就显得优雅许多,abp默认系统架构提供了这么一张表:abpsettings 也封装了对应的方法可以直接使用;原创 2020-09-01 19:09:04 · 3633 阅读 · 0 评论