该技能用于按领域驱动设计(DDD)原则构建可维护、可扩展的 ABP Framework 应用,组合三部分内容:abp-entity-patterns 关注领域层(实体、仓储、领域服务、数据种子);abp-service-patterns 关注应用层(AppService、DTO、Mapperly、工作单元、过滤 DTO);abp-infrastructure-patterns 关注横切关注点(权限、后台作业、事件、多租户)。
典型分层为 Domain.Shared、Domain、Application.Contracts、Application、EntityFrameworkCore、HttpApi 与 HttpApi.Host。常用模式包括:实体使用私有 setter 和领域方法封装,并提供受保护的参数构造供 EF Core 使用;仓储承载自定义数据访问查询;领域服务处理跨实体业务规则;应用服务负责编排、授权与映射,简单 CRUD 可继承 CrudAppService;输入 DTO 使用 Validator 校验;权限常量放 Domain.Shared;后台作业处理异步或延迟任务;分布式事件用于模块解耦。
用法要点:实体常量集中定义最大长度;AppService 类级 [Authorize] 控制默认权限,写操作再加方法级权限;映射推荐 Mapperly 静态扩展方法(不注入映射器),也支持实例映射器并经模块注册;过滤 DTO 继承 PagedAndSortedResultRequestDto,列表查询用 WhereIf 处理可选条件,分页与排序使用 PageBy、AsyncExecuter;单次插入可用 autoSave: true 减少 SaveChanges;权限命名采用 {Project}.{Resource}.{Action} 形式,并在 PermissionDefinitionProvider 中定义。
限制与说明:资料未提供安装命令、版本要求、收费或平台信息;示例代码中的命名空间与占位符(如 {ProjectName})需按实际项目替换。技能建议避免 AutoMapper、避免暴露实体、避免重复授权。相关外部资源包括 ABP 文档、社区、GitHub 及 Mapperly 官网(URL 见资料)。