SuperAPI AI 工具集

abp-entity-patterns

通用与其它

查看项目

更新于 10-16 01:26

技能介绍

用途:为 ABP Framework 项目提供领域层(Domain Layer)的 DDD 模式参考,包括实体、聚合根、仓储、领域服务与数据播种。

分层结构:Domain.Shared(常量、枚举、共享类型)、Domain(实体、仓储接口、领域服务、领域事件)、Application.Contracts(DTO、应用服务接口)、Application(应用服务、映射配置)、EntityFrameworkCore(DbContext、仓储实现)、HttpApi(控制器)、HttpApi.Host(启动配置)。原则是依赖只能向下:Application 依赖 Domain,Domain 不依赖 Application。

实体基类选择:Entity<TKey>(无审计)、AuditedEntity<TKey>(创建/修改跟踪)、FullAuditedEntity<TKey>(软删除+完整审计)、AggregateRoot<TKey>(聚合根)、FullAuditedAggregateRoot<TKey>(常用,功能完整)。实体使用私有 setter 与领域方法封装状态,构造函数中校验,如 Check.NotNullOrWhiteSpace。实现 ISoftDelete 加 IsDeleted 可软删除,ABP 自动过滤;实现 IMultiTenant 加 TenantId 可按租户自动过滤。FullAuditedAggregateRoot 提供 CreationTime、CreatorId、LastModificationTime、LastModifierId、IsDeleted、DeletionTime、DeleterId。

仓储:注入 IRepository<TEntity, TKey> 使用通用仓储;需要自定义查询时在 Domain 定义接口(如 IPatientRepository),在 EntityFrameworkCore 层继承 EfCoreRepository 实现。

领域服务:当业务逻辑涉及多个实体或外部领域概念时使用(如 AppointmentManager 校验医生可用性与时间冲突,抛 BusinessException)。

数据播种:实现 IDataSeedContributor, ITransientDependency,在 SeedAsync 中先做幂等检查(如 GetCountAsync() > 0 则返回)再插入。可另写测试数据播种器,用固定 Guid 常量便于断言。

限制:资料仅给出示例代码与模式说明,未提供安装命令、版本要求、NuGet 包名、收费与价格信息,这些暂未提供。以上模式需结合 ABP 官方文档使用。