SuperAPI AI 工具集

abp-entity-patterns

数据与分析

查看项目

更新于 10-15 21:09

技能介绍

用途:为 ABP Framework 提供领域层(Domain Layer)的 DDD 模式参考,指导实体、聚合根、仓储、领域服务与数据种子的编写。

主要能力:

  1. 分层架构说明:Domain.Shared、Domain、Application.Contracts、Application、EntityFrameworkCore、HttpApi、HttpApi.Host,依赖只能向下流动,Domain 不依赖 Application。
  2. 实体基类选择:Entity<TKey>(无审计)、AuditedEntity<TKey>(创建/修改跟踪)、FullAuditedEntity<TKey>(软删除+完整审计)、AggregateRoot<TKey>、FullAuditedAggregateRoot<TKey>(最常用)。
  3. 标准实体写法:私有 setter、带校验的构造函数、领域方法(如 SetName、SetEmail、Activate/Deactivate),使用 Check.NotNullOrWhiteSpace 校验。
  4. 软删除与多租户:实现 ISoftDelete(IsDeleted)与 IMultiTenant(TenantId),ABP 自动过滤。
  5. 审计字段:FullAuditedAggregateRoot 提供 CreationTime、CreatorId、LastModificationTime、LastModifierId、IsDeleted、DeletionTime、DeleterId。
  6. 仓储模式:泛型 IRepository<Patient, Guid> 的 GetAsync、GetCountAsync、GetQueryableAsync、PageBy 分页;自定义仓储接口定义在 Domain 层,实现在 EntityFrameworkCore 层(EfCoreRepository)。
  7. 领域服务:DomainService 处理跨实体业务规则,如检查医生可用性与预约冲突,抛出 BusinessException。
  8. 数据种子:IDataSeedContributor + ITransientDependency,SeedAsync 中先做幂等检查再插入;测试数据种子使用固定 Guid。

使用方式:按分层放置代码,实体继承合适基类并封装状态,简单规则放实体,跨实体逻辑放领域服务,仅在需要自定义查询时创建仓储,种子数据必须幂等。

适用场景:ABP 项目的领域建模、实体设计、仓储扩展、业务规则集中管理与初始化数据。

限制:资料未提供具体安装命令、版本要求、收费信息或性能数据;示例代码为演示性质,实际使用需结合项目上下文调整。