abp

Magicodes.Pay已支持Volo Abp

Magicodes.Pay已支持Volo Abp 简介 Magicodes.Pay希望打造一个统一支付库,相关库均使用.NET标准库编写,支持.NET Framework以及.NET Core。目前已提供Abp及Abp VNext(Volo Abp)模块的封装,支持开箱即用。 GitHub:http ... »

codelove

通俗理解ABP中的模块Module

网上有不少文章说ABP的模块,有的直接翻译自官网介绍,有的分析Modlue的源代码,有的写一通代码,没什么注释,很少有能通俗说清的。那么,有两个问题:1.ABP中的模块到底是什么?2.搞这个东西是干嘛用的?难道是吃撑了没事做?下面我们来如何通俗回答这两个问题。 第一个问题:ABP中的模块到底是什么? ... »

ABP vNext系列文章03---依赖注入

一、依赖注入的类型注册 ABP的依赖注入系统是基于Microsoft的依赖注入扩展库(Microsoft.Extensions.DependencyInjection nuget包)开发的.因此,它的文档在ABP中也是有效的. 也就是说我们在ABP中要想向IOC容器中注入类有两种方式: 一是可以使用 ... »

基于ABP的AppUser对象扩展

在ABP中AppUser表的数据字段是有限的,现在有个场景是和小程序对接,需要在AppUser表中添加一个OpenId字段。今天有个小伙伴在群中遇到的问题是基于ABP的AppUser对象扩展后,用户查询是没有问题的,但是增加和更新就会报"XXX field is required"的问题。本文以Ap ... »

shengshengwang

ABP中的数据过滤器

本文首先介绍了ABP内置的软删除过滤器(ISoftDelete)和多租户过滤器(IMultiTenant),然后介绍了如何实现一个自定义过滤器,最后介绍了在软件开发过程中遇到的实际问题,同时给出了解决问题的一个未必最优的思路。 一.预定义过滤器 ABP中的数据过滤器源码在Volo.Abp.Data[ ... »

shengshengwang

ABP 6.0.0-rc.1的新特性

2022-07-26官方发布ABP 6.0.0-rc.1版本,本文挑选了几个新特性进行了介绍,主要包括LeptonX Lite默认主题、OpenIddict模块,以及如何将Identity Server迁移到OpenIddict。据ABP官方公众号介绍,ABP 6.0.0稳定版的计划发布日期为202 ... »

shengshengwang

基于ABP和Magicodes实现Excel导出操作

前端使用的vue-element-admin框架,后端使用ABP框架,Excel导出使用的Magicodes.IE.Excel.Abp库。Excel导入和导出操作几乎一样,不再介绍。文本主要介绍Excel导出操作和过程中遇到的坑,主要是Excel文件导出后无法打开的问题。 一.Magicodes.I ... »

shengshengwang

手动从0搭建ABP框架-ABP官方完整解决方案和手动搭建简化解决方案实践

本文主要讲解了如何把ABP官方的在线生成解决方案运行起来,并说明了解决方案中项目间的依赖关系。然后手动实践了如何从0搭建了一个简化的解决方案。ABP官方的在线生成解决方案源码下载参考[3],手动搭建的简化的解决方案源码下载参考[4]。 一.ABP官方在线生成解决方案 1.将在线生成解决方案跑起来 首 ... »

shengshengwang

基于ABP实现DDD--领域逻辑和应用逻辑

本文主要介绍了多应用层的问题,包括原因和实现。通过理解介绍了如何区分领域逻辑和应用逻辑,哪些是正确的实践,哪些是不推荐的或者错误的实践。 一.多应用层的问题 1.多应用层介绍 不知道你们是否会遇到一种情况,通过ABP构建了一个后端的API项目,刚开始是为Web端项目(比如,Vue)提供后端接口服务的 ... »

shengshengwang

基于ABP实现DDD--实体创建和更新

本文主要介绍了通过构造函数和领域服务创建实体2种方式,后者多用于在创建实体时需要其它业务规则检测的场景。最后介绍了在应用服务层中如何进行实体的更新操作。 一.通过构造函数创建实体 假如Issue的聚合根类为: public class Issue : AggregateRoot<Guid> { pu ... »

shengshengwang

分享一个基于Abp Vnext开发的API网关项目

这个项目起源于去年公司相要尝试用微服务构建项目,在网关的技术选型中,我们原本确认了ApiSix 网关,如果需要写网关插件需要基于Lua脚本去写,我和另外一个同事当时基于这个写了一个简单的插件,但是开发测试以及发布都很麻烦,而且使用Lua脚本作为插件的开发语言本身也不是我们强项。 后来通过其他渠道了解 ... »

基于ABP实现DDD--领域服务、应用服务和DTO实践

什么是领域服务呢?领域服务就是领域对象本身的服务,通常是通过多个聚合以实现单个聚合无法处理的逻辑。 一.领域服务实践 接下来将聚合根Issue中的AssignToAsync()方法[将问题分配给用户],剥离到领域服务当中。如下: // ABP当中的领域服务类通常都是以Manager结尾的 publi ... »

shengshengwang

基于ABP实现DDD--仓储实践

由于软件系统中可能有着不同的数据库,不同的ORM,仓储思想的本质是解耦它们。在ABP中具体的实现仓储接口定义在领域层,实现在基础设施层。仓储接口被领域层(比如领域服务)和应用层用来访问数据库,操作聚合根,聚合根就是业务单元。这篇文章主要分析怎么通过规约将业务逻辑从仓储实现中剥离出来,从而让仓储专注于 ... »

shengshengwang

ABP 直接使用 dbContext

[AbpMvcAuthorize] [Route(&quot;api/Test&quot;)] [ApiController] public class TestController : DiveCRMControllerBase { private readonly IDbContextProvider&amp;lt;DiveCRMDbContext&amp;gt; _provide »

企业级自定义表单引擎解决方案(十一)--表单规则引擎1

.net core研发的自定义表单引擎,采用强大的规则引擎将所有的业务串联起来的,和其他低代码平台是有本质的区别的,目标是完全解放繁琐的CRUD工作。 规则引擎是自定义表单最为核心的内容,也是与其他低代码工具最为本质的区别,非常重要的内容,对于读者来说也是最难理解内容。 没有规则引擎的低代码工具,即 ... »

ABP 番外篇-菜单

public class LearningMpaAbpNavigationProvider : NavigationProvider { public override void SetNavigation(INavigationProviderContext context) { context.Manager.MainMenu »

Abp添加菜单

在abp模板中添加菜单,EntityFramework+Angular.js模板,使用的Abp版本为3.8.1。 创建Abp项目模板,例如名称叫做LawAndRegulation。 服务端添加菜单项 找到Mpa或者Spa项目,也就是LawAndRegulation.WebMpa或者LawAndRegulation.WebSpaAngular。 项目中找到LawAndRegulationNaviga »

abp.vnext vue 跨域设置

在vue中js访问非同地址的webapi,会报Access to XMLHttpRequest at 'xxxx' from origin 'http://localhost:9527' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resou »