dedsi-framework
Dedsi Framework
Dedsi Framework 是基于 ABP 框架的扩展,提供 CQRS、Repository、审计、异常处理、ORM(EF Core/SqlSugar)、CAP、FastEndpoints 等增强功能。
何时使用
- 在 ABP 项目中接入 Dedsi Framework 模块
- 配置和使用 Dedsi CQRS 组件(命令、事件、命令处理器)
- 实现 Repository(CQRS 仓储和通用仓储)
- 配置审计功能(CreatorName 自动填充)
- 使用 DedsiControllerBase 导出 Excel/PDF
- 配置 SqlSugar ORM
- 配置异常处理中间件
- 遵循 Dedsi Framework 约定进行开发
能力规则
没有这些规则,AI 无法解决问题或生成的代码无法正确运行。
模块配置
| 规则 | 影响 | 描述 |
|---|---|---|
| module-dependencies.md | HIGH | 在 ABP 项目中正确接入 Dedsi Framework 模块 |
CQRS
| 规则 | 影响 | 描述 |
|---|---|---|
| cqrs-pattern.md | HIGH | 使用 Dedsi Framework 的 CQRS 组件实现命令处理和事件发布 |
Repository
| 规则 | 影响 | 描述 |
|---|---|---|
| repository-pattern.md | HIGH | 使用 Dedsi Framework 的 Repository 接口实现数据访问 |
审计
| 规则 | 影响 | 描述 |
|---|---|---|
| auditing-configuration.md | MEDIUM | 使用 Dedsi Framework 的审计接口和属性设置器实现自动审计 |
效率规则
这些规则帮助 AI 更有效、更一致地解决问题。
Web API
| 规则 | 影响 | 描述 |
|---|---|---|
| exception-handling.md | MEDIUM | 在项目中正确配置 Dedsi Global Exception Handler 以统一错误响应格式 |
| file-export.md | LOW | 使用 DedsiControllerBase 快速实现 Excel/PDF 导出功能 |
数据库
| 规则 | 影响 | 描述 |
|---|---|---|
| sqlsugar-configuration.md | MEDIUM | 在项目中正确配置和使用 SqlSugar ORM |
DTO
| 规则 | 影响 | 描述 |
|---|---|---|
| paged-request-dto.md | MEDIUM | 使用 DedsiPagedRequestDto 实现统一的分页请求 |
模块速查
Dedsi.AspNetCore
DedsiControllerBase:控制器基类,提供FileByExcel、FileByPdf方法DedsiGlobalExceptionHandler:全局异常处理中间件DedsiErrorData、DedsiErrorMessage:错误响应结构
Dedsi.Ddd.Domain
IDedsiCreationAuditedObject:创建审计接口IDedsiCqrsRepository<TDomain, TKey>:CQRS 仓储接口IDedsiRepository<TEntity, TKey>:通用仓储接口IDedsiQuery:查询标记接口
Dedsi.Ddd.CQRS
DedsiMediator:中介者(自动记录命令)DedsiCommand、DedsiCommand<TResponse>:命令基类DedsiCommandHandler<TCommand>:命令处理器基类DedsiLocalEventBus:本地事件总线(自动记录事件)DedsiEvent:事件基类ICommandEventRecorderRepository:命令/事件记录仓储
Dedsi.EntityFrameworkCore
DedsiDddEfCoreRepository<TDbContext, TDomain, TKey>:CQRS 仓储实现DedsiEfCoreRepository<TDbContext, TEntity, TKey>:通用仓储实现DedsiAuditPropertySetter:审计属性设置器
Dedsi.SqlSugar
DedsiSqlSugarExtensions:SqlSugar 配置扩展IDedsiSqlSugarQuery:SqlSugar 查询接口
Dedsi.Ddd.Application.Contracts
DedsiPagedRequestDto:分页请求基类DedsiPagedResultDto<TRowDto>:分页结果基类
Dedsi.Core
- 扩展工具类:
EnumExtensions、DateTimeExtensions、StringExtensions等
技术栈
- 框架:ABP Framework
- 语言:C# / .NET
- ORM:Entity Framework Core、SqlSugar
- CQRS:MediatR
- 分布式事务:DotNetCore.CAP
- 轻量级 API:FastEndpoints
源代码信息
- 源代码目录:
/Users/cohen/GitHub/DedsiFramework/src - 文件数量:64 个 .cs 文件(忽略 bin/obj 目录)
- 模块数量:12 个模块
排错指南
"不知道该引用哪个库"
- 查看模块速查,定位类型所在模块
- 检查项目是否引用了对应 NuGet 包/项目引用
- 检查 ABP
DependsOn是否添加
"异常没有变成 DedsiErrorData"
- 确认期望的错误响应格式(ABP 默认 vs DedsiErrorData)
- 若使用 DedsiErrorData,检查
DedsiGlobalExceptionHandler是否注册 - 检查业务层是否抛出
BusinessException/UserFriendlyException
"CreatorName 没有自动填充"
- 确认使用 EF Core 集成
- 检查实体是否实现了
IDedsiHasCreationName、IDedsiHasCreationId或IDedsiHasCreationTime - 检查
CurrentUser.Name和CurrentUser.Id是否有值
"CQRS 记录没有落库/没有输出"
- 确认发命令是否通过
DedsiMediator,发事件是否通过DedsiLocalEventBus - 确认
ICommandEventRecorderRepository是否有实现并注册 - 开发期可使用
LocalCommandEventRecorderRepository验证
"分页查询结果不正确"
- 检查
PageIndex和PageSize的值(PageSize 限制在 1-1000) - 检查
GetPagedListAsync的isReverse参数 - 检查排序字段是否正确
"SqlSugar 日志不输出"
- 检查当前环境是否为
Development(只有在Development环境下才会输出 SQL 日志) - 检查
connectionConfig配置是否正确
参考资源
- DedsiFramework 源代码 - 完整源代码
- ABP Framework - ABP 官方文档
- dedsiddd-dotnet-coding - DedsiDDD 代码生成规范
More from dedsiteam/dedsi-skills
dedsi-vue3-coding
Vue 3 coding guidelines and best practices with Dedsi UI components
15dedsi-vue3-project
Vue 3 project architecture overview with specific tech stack and development guidelines
12dedsi-vue-ui
Dedsi-Vue-UI 是一个基于 Vue 3 + TypeScript 的现代化 UI 组件库,提供了 37+ 个高质量组件,涵盖基础、布局、导航、数据展示和反馈等场景。
11vueuse-best-practices
VueUse composable patterns and TypeScript integration. Covers common VueUse gotchas, SSR compatibility, and best practices. Use when working with VueUse composables, debugging VueUse issues, or integrating VueUse with SSR.
11dedsiddd-dotnet-coding
用于在 DedsiDDD + .NET 项目中,按统一约定生成 DDD/CQRS 常见代码骨架(领域模型、DTO、EF Core 映射、仓储、Commands、Queries、Controller)。
10pinia-best-practices
Pinia store TypeScript configuration and typing issues. Covers storeToRefs type loss, getters circular references, and setup store patterns. Use when working with Pinia stores in Vue 3 projects, debugging store type errors, or fixing storeToRefs type inference.
9