dedsi-framework
npx skills add https://github.com/dedsiteam/dedsi-skills --skill dedsi-framework
Agent 安装分布
Skill 文档
èå´ä¸ç®æ
æ¬ Skill ç¨äºï¼
- å¿«éè§£é Dedsi Framework åç±»åºçèè´£ä¸æ ¸å¿ç±»åï¼ææ¨¡åï¼ã
- æå¯¼å¨ ABP 项ç®ä¸å¦ä½å¼ç¨/DependsOn/é ç½®è¿äºæ¨¡åã
- ç»åº CQRSãRepositoryãå¼å¸¸å¤çãORMï¼EF Core/SqlSugarï¼ãCAPãFastEndpoints çå ¸åç¨æ³ä¸è½å°æ£æ¥æ¸ åã
ä¸å¨èå´å ï¼
- æ¨æ/ç¼é Dedsi Framework æªå¨ææ¡£ä¸æè¿°ç API è¡ä¸ºä¸åæ°ã
- è¾åºä¸ç°æé¡¹ç®çº¦å®å²çªç强ç»å®ä»£ç ï¼è¥ä»åºå·²æå®ç°ï¼ä»¥ä»åºä¸ºåï¼ã
ä¿¡æ¯æ¥æºï¼å·¥ä½åºæ ¹ç®å½ DedsiFramework.mdã
å¿«éç®å½
模å鿥
ä¸åå 容æ¯å¯¹ææ¡£ä¸åç±»åºä¸ç±»åçâ坿£ç´¢éè®°âãå½ä½ éè¦å®ä½âè¿ä¸ªç±»åå±äºåªä¸ªåº/åºè¯¥å¨åªéç¨âæ¶ï¼ä¼å ä»è¿éå¼å§ã
1) Dedsi.AspNetCore
å®ä½ï¼ASP.NET Core æ©å±ä¸ä¸é´ä»¶ï¼å¢å¼º Web API åºç¡è½åã
æ ¸å¿ç±»å
DedsiAspNetCoreModuleï¼æ¨¡åå®ä¹æä»¶ï¼é ç½®ä¾èµãDedsiControllerBaseï¼æ§å¶å¨åºç±»ï¼ç»§æ¿AbpControllerBaseï¼ã- æä¾
FileByExcelãFileByPdf便æ·å¯¼åºã
- æä¾
Middlewares/DedsiGlobalExceptionHandlerï¼å ¨å±å¼å¸¸å¤çä¸é´ä»¶ã- å¯éï¼å½ä½ éè¦å°é误ååºç»ä¸ä¸º
DedsiErrorDataï¼é ABP é»è®¤æ ¼å¼ï¼æ¶å¯ç¨ã - æè·å¼å¸¸å¹¶ç»ä¸è¿å
DedsiErrorDataJSONã - èªå¨å¤ç
UserFriendlyExceptionãBusinessExceptionå¹¶æåé误ç ã
- å¯éï¼å½ä½ éè¦å°é误ååºç»ä¸ä¸º
DedsiErrorDataï¼å¯éçé误ååºç»æå°è£ ï¼ç¨äºæ¿ä»£/å ¼å®¹ ABP é»è®¤é误ååºï¼ãDedsiErrorMessageï¼éè¯¯ä¿¡æ¯æ¨¡åï¼MessageãCodeãServiceTimeï¼ã
2) Dedsi.Ddd.Domain
å®ä½ï¼é¢åå±åºç¡æ©å±ï¼å¢å¼ºå®¡è®¡ãä»å¨ãæ¥è¯¢æ è®°æ¥å£ã
æ ¸å¿ç±»å
DedsiDddDomainModuleï¼æ¨¡åå®ä¹ãDedsiDddDomainConstsï¼é¢å常éï¼ä¾å¦é»è®¤ DB Schemaï¼ã- 审计æ¥å£ï¼æ©å±å建审计ï¼å«å建人å§åï¼
Auditing/Contracts/IDedsiCreationAuditedObjectAuditing/Contracts/IDedsiMayHaveCreatorAuditing/Contracts/IHasCreationName
- æ¥è¯¢æ è®°
Queries/IDedsiQueryï¼æ è®°æ¥å£ï¼ç»§æ¿ITransientDependencyã
- ä»å¨æ¥å£
Repositories/IDedsiCqrsRepositoryï¼é¢å CQRS çä»å¨æ¥å£ï¼Insert/Update/Delete çï¼ãRepositories/IDedsiRepositoryï¼å¢å¼ºéç¨ä»å¨æ¥å£ãGetQueryableNoTrackingAsyncï¼æ 追踪æ¥è¯¢ï¼GetPagedListAsyncï¼å页æ¥è¯¢ï¼DeleteManyAsyncï¼æ¹éå é¤ï¼ExecuteSqlAsyncï¼æ§è¡åç SQLï¼
3) Dedsi.Ddd.Domain.Shared
å®ä½ï¼é¢åå ±äº«é¡¹ç®ï¼æä¸¾ã常éãå ±äº«å¯¹è±¡ï¼ã
æ ¸å¿ç±»å
DedsiDddDomainSharedModule
4) Dedsi.Ddd.Application.Contracts
å®ä½ï¼åºç¨æå¡å¥çº¦å±ï¼DTO 䏿塿¥å£ï¼ã
æ ¸å¿ç±»å
DedsiDddApplicationContractsModule- DTO
Dtos/DedsiPagedRequestDtoï¼å页请æ±åºç±»ï¼PageIndexãPageSizeãIsExportï¼ãDtos/DedsiPagedResultDtoï¼åé¡µç»æåºç±»ã
Services/IDedsiApplicationServiceï¼åºç¨æå¡åºç±»æ¥å£ã
5) Dedsi.Ddd.Application
å®ä½ï¼åºç¨æå¡å±åºç¡å®ç°ã
æ ¸å¿ç±»å
DedsiDddApplicationModuleServices/DedsiApplicationServiceï¼ç»§æ¿ ABPApplicationServiceå¹¶å®ç°IDedsiApplicationServiceã
6) Dedsi.Ddd.CQRS
å®ä½ï¼CQRS æ ¸å¿åºï¼éæ MediatRï¼æä¾å½ä»¤/äºä»¶è®°å½è½åã
æ ¸å¿ç±»å
DedsiDddCqrsModuleDedsiDddCqrsConsts
å½ä»¤/äºä»¶è®°å½ï¼Recordersï¼
CommandEventRecorderï¼è®°å½å®ä½ãCqrsCeRecorderï¼è®°å½æå¡å®ç°ï¼è°ç¨ Repository ä¿åï¼ãICqrsCeRecorderï¼è®°å½æå¡æ¥å£ãICommandEventRecorderRepositoryï¼è®°å½ä»å¨æ¥å£ãLocalCommandEventRecorderRepositoryï¼æ¬å°è®°å½ä»å¨å®ç°ï¼å¼å/æ¥å¿ï¼ã
å½ä»¤å¤çï¼Handlersï¼
DedsiCommandHandlerï¼å½ä»¤å¤çå¨åºç±»ï¼æ³¨å ¥ LoggerãCurrentUser çå¸¸ç¨æå¡ï¼ãIDedsiCommandHandler
å½ä»¤ï¼Commandsï¼
DedsiCommandï¼å½ä»¤åºç±»ï¼å«CommandIdï¼ãDedsiCommandIdï¼å½ä»¤ ID å¼å¯¹è±¡ãIDedsiCommand
äºä»¶æ»çº¿ï¼EventBusï¼
DedsiEventãDedsiEventIdãIDedsiEventDedsiLocalEventBusï¼èªå®ä¹æ¬å°äºä»¶æ»çº¿ï¼éåPublishAsync以èªå¨è®°å½äºä»¶æ¥å¿ã
ä¸ä»è ï¼Mediatorsï¼
DedsiMediatorï¼å°è£ MediatRï¼åéå½ä»¤ååèªå¨è®°å½æ¥å¿ãIDedsiMediator
7) Dedsi.EntityFrameworkCore
å®ä½ï¼EF Core éæï¼å®ç° Dedsi.Ddd.Domain çä»å¨æ¥å£ï¼å¹¶æä¾ Dapper éæã
æ ¸å¿ç±»å
DedsiEntityFrameworkCoreModule- DbContext
EntityFrameworkCore/DedsiEfCoreDbContextEntityFrameworkCore/IDedsiEfCoreDbContext
PropertySetters/DedsiAuditPropertySetterï¼èªå¨å¡«åCreatorNameã- æ¥è¯¢åºç±»
Queries/DedsiDapperQueryQueries/DedsiEfCoreQueryï¼æä¾GetNoTrackingQueryableAsyncã
- ä»å¨å®ç°
Repositories/DedsiDddEfCoreRepositoryï¼IDedsiCqrsRepositoryç EF Core å®ç°ãRepositories/DedsiEfCoreRepositoryï¼IDedsiRepositoryç EF Core å®ç°ï¼åé¡µãæ¹éå é¤çï¼ã
8) Dedsi.SqlSugar
å®ä½ï¼SqlSugar ORM éæï¼æä¾å¦ä¸ç§æ°æ®è®¿é®æ¹å¼ã
æ ¸å¿ç±»å
DedsiSqlSugarModuleExtensions/DedsiSqlSugarExtensionsï¼å¨æ¨¡åé ç½®ä¸æ³¨å SqlSugarï¼SqlServerãMySqlï¼ãQueries/DedsiSqlSugarQueryï¼åºäº SqlSugar çæ¥è¯¢åºç±»ï¼å®ç°IDedsiQueryã
9) Dedsi.Core
å®ä½ï¼æ ¸å¿æ¨¡åï¼æåºç¡å®ä¹ï¼ã
DedsiCoreModule
10) Dedsi.CAP
å®ä½ï¼éæ DotNetCore.CAPï¼å¤çåå¸å¼äºå¡ä¸æ¶æ¯éåã
DedsiCapModule
11) Dedsi.FastEndpoints
å®ä½ï¼éæ FastEndpointsï¼æä¾è½»é级 API 端ç¹å¼åæ¹å¼ã
DedsiFastEndpointsModule
12) Dedsi.CleanArchitecture.*ï¼Domain/HttpApi/Infrastructureï¼
å®ä½ï¼æ´åæ¯æ´æ´æ¶æï¼Clean Architectureï¼æ¨¡æ¿/示ä¾ç»æï¼ä¸ä¸å®å±äºæ¡æ¶âæ ¸å¿è½åâã
æ ¸å¿ç±»å
Dedsi.CleanArchitecture.DomainDedsiCleanArchitectureDomainModuleDedsiCleanArchitectureDomainConsts
Dedsi.CleanArchitecture.HttpApiDedsiCleanArchitectureHttpApiModule
Dedsi.CleanArchitecture.InfrastructureDedsiCleanArchitectureInfrastructureModule
ABP æ¥å ¥æ¸ å
ç®æ ï¼æ Dedsi Framework å½ä½ ABP 模åéåæ¥å ¥ãä¸å项ç®ç模åè£ é ç¹å¯è½å¨ Host / HttpApi / Application çå±ï¼ä»¥ä½ çè§£å³æ¹æ¡åå±ä¸ºåã
1) éæ©ä½ éè¦ç模å
- Web APIï¼å¼å¸¸å¤ç/导åºï¼â
Dedsi.AspNetCore - DDD åºç¡ï¼å®¡è®¡æ¥å£/ä»å¨æ¥å£/æ¥è¯¢æ è®°ï¼â
Dedsi.Ddd.Domain+Dedsi.Ddd.Domain.Shared - åºç¨æå¡ â
Dedsi.Ddd.Application.Contracts+Dedsi.Ddd.Application - CQRSï¼MediatR + è®°å½ï¼â
Dedsi.Ddd.CQRS - EF Core ä»å¨å®ç° + Dapper Query â
Dedsi.EntityFrameworkCore - SqlSugar Query â
Dedsi.SqlSugar - åå¸å¼äºå¡/æ¶æ¯ â
Dedsi.CAP - FastEndpoints â
Dedsi.FastEndpoints
2) å¨ ABP Module ä¸å£°æ DependsOnï¼æ¨¡æ¿ï¼
å ·ä½æ¨¡åç±»åæ¥èªææ¡£ï¼å®é å½å空é´/å å¼ç¨ä»¥ä½ ç项ç®å¼ç¨ä¸ºåã
using Volo.Abp.Modularity;
[DependsOn(
typeof(DedsiAspNetCoreModule),
typeof(DedsiDddDomainModule),
typeof(DedsiDddDomainSharedModule),
typeof(DedsiDddApplicationContractsModule),
typeof(DedsiDddApplicationModule),
typeof(DedsiDddCqrsModule),
typeof(DedsiEntityFrameworkCoreModule)
)]
public class YourProjectModule : AbpModule;
// 妿éè¦å¯ç¼è¯ç¤ºä¾ï¼ä½¿ç¨ï¼
// public class YourProjectModule : AbpModule
// {
// }
3) å¼å¸¸/é误ååºçç¥ï¼æ¨èï¼
- ä¼å ä½¿ç¨ ABP é»è®¤å¼å¸¸å¤çä¸é误ååºï¼é¡¹ç®çæ¢ææ ¼å¼ä¸ºåï¼ã
- å¯éï¼å¦æå端/è°ç¨æ¹å¿
须使ç¨
DedsiErrorDataä½ä¸ºç»ä¸é误å¥çº¦ï¼åå¯ç¨DedsiGlobalExceptionHandlerã - 注æï¼
DedsiGlobalExceptionHandlerå±äºâæ¿æ¢/å 裹é»è®¤è¾åºâçä¸é´ä»¶ï¼æ³¨å顺åºå¯è½æ¹åæç»è¿åæ ¼å¼ï¼è¥é¡¹ç®å·²æ ABP ç»ä¸é误è¿å约å®ï¼ä¼å ä¿æä¸è´ã
4) 审计ï¼CreatorNameï¼å¯ç¨æ£æ¥ï¼EF Coreï¼
- è¥ä½ ä½¿ç¨ EF Core éæï¼ç¡®è®¤
DedsiAuditPropertySetterçæã - ææè¡ä¸ºï¼å®ä½å®ç°/å
å«
CreatorNameæ¶ï¼å¨å建æ¶èªå¨å¡«å ã
常ç¨ä½¿ç¨åºæ¯
åºæ¯ Aï¼ç»ä¸ API é误è¿åï¼ä¼å ABPï¼
ç®æ ï¼é误ååºæ ¼å¼ä¸é¡¹ç® ABP 约å®ä¿æä¸è´ï¼ä»
å¨éè¦æ¶åæ¢å° DedsiErrorDataã
è½å°çç¥ï¼äºéä¸ï¼ï¼
- æ¨èï¼ABP é»è®¤é误ååº
- ä¿æ ABP çå¼å¸¸å¤çä¸é误è¿åï¼ä¸é¢å¤æ¥ç®¡æ ¼å¼ã
- ä¸å¡å±ä½¿ç¨
BusinessException/UserFriendlyException表达å¯é¢æé误ï¼å¹¶æºå¸¦é误ç /æ¶æ¯ï¼ã
- å¯éï¼DedsiErrorData é误ååº
- ä»
å½è°ç¨æ¹æç¡®è¦æ±
DedsiErrorDataå¥çº¦æ¶ï¼å¨ Host 管线å¯ç¨DedsiGlobalExceptionHandlerã - å¯ç¨å颿ï¼å¼å¸¸ç»ä¸è¿å
DedsiErrorDataJSONï¼Message/Code/ServiceTimeï¼ã
- ä»
å½è°ç¨æ¹æç¡®è¦æ±
åºæ¯ Bï¼Controller å¯¼åºæä»¶
ç®æ ï¼å¿«éå¯¼åº Excel/PDFã
è½å°æ¥éª¤ï¼
- Controller ç»§æ¿
DedsiControllerBaseã - è°ç¨
FileByExcel/FileByPdfï¼åæ°ä¸å ·ä½çæé»è¾ä»¥æ¡æ¶å®ç°ä¸ºåï¼ã
åºæ¯ Cï¼CQRS + èªå¨è®°å½ï¼å½ä»¤/äºä»¶ï¼
ç®æ ï¼å½ä»¤ä¸äºä»¶å¨åé/å叿¶èªå¨è®°å½ã
è¦ç¹ï¼
- åå½ä»¤ï¼ä¼å
使ç¨
DedsiMediatorï¼èéç´æ¥ä½¿ç¨ MediatR çé»è®¤æ¥å£ï¼ï¼ä»¥ä¾¿âåéååèªå¨è®°å½âã - åäºä»¶ï¼ä½¿ç¨
DedsiLocalEventBusåå¸äºä»¶ï¼ä»¥ä¾¿PublishAsyncèªå¨è®°å½äºä»¶æ¥å¿ã - è®°å½è½å°ï¼éè¿
ICqrsCeRecorder+ICommandEventRecorderRepositoryï¼å¯éæ¬å°å®ç°LocalCommandEventRecorderRepositoryï¼ã
åºæ¯ Dï¼Repository/Query çç»ä¸æ½è±¡
ç®æ ï¼è¯»åå离ä¸éç¨æ°æ®è®¿é®è½åç»ä¸ã
çç¥å»ºè®®ï¼
- åä¾§ï¼å½ä»¤ï¼ä½¿ç¨
IDedsiCqrsRepository/ å ¶ EF Core å®ç°DedsiDddEfCoreRepositoryã - è¯»ä¾§ï¼æ¥è¯¢ï¼ä½¿ç¨
IDedsiQueryæ è®°ï¼å¹¶éæ©ï¼- EF Coreï¼ç»§æ¿/使ç¨
DedsiEfCoreQueryè·åæ 追踪 IQueryableï¼GetNoTrackingQueryableAsyncï¼ã - Dapperï¼ä½¿ç¨
DedsiDapperQueryã - SqlSugarï¼ä½¿ç¨
DedsiSqlSugarQueryã
- EF Coreï¼ç»§æ¿/使ç¨
åºæ¯ Eï¼å页/æ¹éæä½/åç SQL
ç®æ ï¼å¨éç¨ä»å¨ä¸ç»ä¸åé¡µãæ¹éå é¤ãæ§è¡ SQLã
è¦ç¹ï¼
- 使ç¨
IDedsiRepositoryï¼æå ¶å®ç°DedsiEfCoreRepositoryï¼æä¾ï¼GetPagedListAsyncDeleteManyAsyncExecuteSqlAsync
æéä¸å¯¹é½
1) âä¸ç¥é该å¼ç¨åªä¸ªåºâ
- å æ¥â模å鿥âå®ä½ç±»åæå¨æ¨¡åã
- 忣æ¥ä½ çé¡¹ç®æ¯å¦å¼ç¨äºå¯¹åº NuGet å
/项ç®å¼ç¨ï¼ä»¥å ABP
DependsOnæ¯å¦æ·»å ã
2) âå¼å¸¸æ²¡æåæ DedsiErrorDataâ
å ç¡®è®¤ä½ å°åºææåªä¸ç§æ ¼å¼ï¼
- è¥ææ ABP é»è®¤é误ååºï¼ä¸è¦å¯ç¨ï¼æç§»é¤ï¼
DedsiGlobalExceptionHandlerï¼å¹¶æ£æ¥æ¯å¦æèªå®ä¹ä¸é´ä»¶/è¿æ»¤å¨æ¥ç®¡äºå¼å¸¸è¾åºã - è¥ææ DedsiErrorDataï¼æ£æ¥
DedsiGlobalExceptionHandleræ¯å¦æ³¨åãé¡ºåºæ¯å¦å¨è·¯ç±/ç»ç»ç¹ä¹åï¼å¹¶æ£æ¥ä¸å¡å±æ¯å¦æåºäºBusinessException/UserFriendlyExceptionï¼ä¾¿äºéè¯¯ç æåï¼ã
3) âCreatorName 没æèªå¨å¡«å â
- ä»
å¨ EF Core éæé¾è·¯ä¸ï¼æ£æ¥
DedsiAuditPropertySetteræ¯å¦å¯ç¨ã - æ£æ¥å®ä½æ¯å¦å®ç°äºææ¡£æå°çå建审计ç¸å
³æ¥å£æå
å«
CreatorNameåæ®µã
4) âCQRS è®°å½æ²¡æè½åº/没æè¾åºâ
- åå½ä»¤æ¯å¦éè¿
DedsiMediatorï¼åäºä»¶æ¯å¦éè¿DedsiLocalEventBusã ICqrsCeRecorderä¸ICommandEventRecorderRepositoryæ¯å¦æå®ç°å¹¶å®æ DI 注åã- å¼åæå¯å
忢å°
LocalCommandEventRecorderRepositoryéªè¯è®°å½é¾è·¯ï¼å¦æé¡¹ç®å 许ï¼ã
交ä»ç©
- æ¬ Skill ä» ç¨äºè§£é/æå¯¼ Dedsi Framework 使ç¨ï¼å¦éæåºäºä½ å ·ä½ä»åºçæ/è°æ´å®é 代ç ï¼æ¨¡åè£ é ã管线注åãCQRS 示ä¾çï¼ï¼è¯·æä¾å¯¹åºé¡¹ç®ç»ææè®©ææ£ç´¢è§£å³æ¹æ¡ç®å½ã