SuperAPI AI 工具集

dotnet-ef-core-configuration

编程与开发

查看项目

更新于 10-16 02:08

技能介绍

用途

该技能面向 .NET 项目,用于生成 Entity Framework Core 的配置代码。其核心目标是通过 Fluent API 将领域实体映射到数据库表,并保持领域模型本身不被持久化细节污染。配置以 IEntityTypeConfiguration 的形式按实体拆分,每个实体对应一个独立的配置类。

主要能力

技能提供的配置模板覆盖以下方面:

  • 表映射:使用 ToTable() 指定表名,采用 snake_case 命名约定(面向 PostgreSQL)。
  • 主键:使用 HasKey() 定义主键,并通过 ValueGeneratedNever() 表示由应用生成 GUID。
  • 属性配置:使用 Property() 设置最大长度、是否必填、列类型、默认值以及默认 SQL 值(如 CURRENT_TIMESTAMP AT TIME ZONE 'UTC')。
  • 索引与约束:使用 HasIndex() 创建索引,支持唯一索引与复合唯一约束。
  • 关系映射:支持一对多、多对一、自引用以及多对多关系,可指定外键与删除行为(Cascade、Restrict)。
  • 值对象:通过 OwnsOne() 将值对象映射为 Owned Type,可映射到同一表的多个列,也可映射为 JSON。
  • 枚举映射:支持将枚举存储为字符串、整数或自定义转换。
  • 影子属性:可为不在领域实体上的审计字段(CreatedAt、UpdatedAt、CreatedBy、UpdatedBy、Version)配置影子属性,其中 Version 可作为并发令牌。
  • 软删除:配置 IsDeleted、DeletedAt 字段,并使用 HasQueryFilter() 添加全局查询过滤器以排除已删除记录。
  • JSON 列:面向 PostgreSQL 的 jsonb 列配置,支持字典序列化以及 EF Core 7+ 的 ToJson() 映射。
  • Outbox 消息:提供 OutboxMessage 表的配置模板,包含 jsonb 内容列与针对未处理消息的过滤索引。

使用方式

技能以代码模板形式给出配置结构。配置类通常放置在 /Infrastructure/Configurations/ 目录下,命名形如 {Entity}Configuration.cs、{ChildEntity}Configuration.cs、{ValueObject}Configuration.cs 以及 OutboxMessageConfiguration.cs。模板中包含命名空间、using 引用与类定义,用户可据此替换实体名与属性名。资料中未提供安装命令或调用命令。

适用场景

适用于采用 Clean Architecture 的 .NET 项目,尤其是使用 PostgreSQL 并希望以 Fluent API 集中管理 EF Core 映射、保持领域层无持久化特性的场景。也适用于需要处理复杂关系、值对象、软删除、审计字段或 Outbox 模式的持久化层设计。

限制

资料中未说明该技能支持的 .NET 或 EF Core 具体版本范围(除 ToJson() 标注为 EF Core 7+ 外),未提供安装方式、依赖要求、收费信息或实际运行效果。部分模板中的占位符(如 {name}、{Entity}、{aggregate})需要使用者自行替换。