用于在 DedsiDDD + .NET 项目中,按统一约定生成 DDD/CQRS 常见代码骨架(领域模型、DTO、EF Core 映射、仓储、Commands、Queries、Controller、SQL Server 建表脚本)。
DedsiDDD + .NET 项目代码生成规范,遵循 DDD/CQRS 与仓库既有约定。
modules/BasicPlatform/*本 SKILL 约定 > 现有仓库约定 > 一般 DDD/CQRS 习惯
api/*/[controller]/[action]。"{id}"、"{id:guid}"。"options"、"export"、"delete"、"enable"、"disable"。[FromRoute]、[FromBody]、[FromQuery] 完成。生成代码前先确认:
*PermissionCodeConsts、读写动作如何命名、是否要同步落权限数据脚本如果用户没有明确说明对象类型,必须先确认“创建聚合根还是实体”,不能自行假设。
string,Ulid.NewUlid().ToString()DedsiPagedRequestDtosqlFiles/Create[Entities].sqlmodules/[Project]/[Project].Domain、modules/[Project]/[Project].UseCase、modules/[Project]/[Project].Infrastructure、modules/[Project]/[Project].HttpApi 组织sqlFiles 目录,并可参考现有 CreateUsers.sql、CreateRoles.sql、CreatePermissions.sql 风格CreatorName、CreatorId、CreationTime、ExtraProperties、ConcurrencyStampmodules/[Project]/[Project].Infrastructure/[Project]InfrastructureModule.cs 中的 Configure<AbpEntityOptions>,为默认详情查询补齐 DefaultWithDetailsFunc 与 .Include(...)IRepository -> RepositoryCancellationToken 并透传到 EF Core/仓储ExecuteUpdateAsync、ExecuteDeleteAsync 等既有能力PagedQuery 中的条件筛选必须优先使用 WhereIf(...) 链式写法完成,避免继续使用多段 if (...) { query = query.Where(...); } 的分散写法*.list、*.read、*.create、*.update、*.delete 等常用权限编码;当前仓库生成值必须统一以 Auth-PermissionCode: 开头,并优先复用公共 AuthorizationPolicyConsts.PermissionPrefix;特殊动作按业务再补充[Authorize(...PermissionCodeConsts...)],禁止继续输出硬编码权限字符串"{id}"、"{id:guid}" 这类参数段frontendIntegrationDocs 文件夹中frontendIntegrationDocs 下必须按领域划分子文件夹进行存放;领域文件夹不存在时必须先创建/dedsi-vue3-coding,第 2 行为 前端对接说明单地址:{完整物理路径},第 3 行为 请基于该前端对接说明单,使用相关技能完成“{功能名称}”功能对接。isEnabled、hasChildren、canDeletemodules/[Project]/[Project].Domain、[Project].UseCase、[Project].Infrastructure、[Project].HttpApihost、aspires、sqlFiles、frontendIntegrationDocs 属于模块外公共目录,不放进模块内部src/ 结构生成代码时必须替换:
[Project] - 项目名称[Domain] - 领域实体名称[Entities] - 实体复数形式[DbContext] - DbContext 名称[Child] - 子实体名称AbpEntityOptions