SuperAPI AI 工具集

dotnet-efcore-architecture

通用与其它

查看项目

更新于 10-16 01:10

技能介绍

用途:为 EF Core 数据层提供战略性架构模式,指导数据层结构设计,而非单条查询的战术写法。

主要能力:读写模型分离(用独立 DbContext 区分命令与查询路径,读上下文默认 NoTracking,可指向只读副本);聚合边界设计(聚合根拥有子实体,通过 OwnsMany 或 HasMany 配置,按 ID 引用其他聚合,保持聚合小、每事务一个聚合);仓储策略(直接 DbContext 或按聚合根定义仓储接口,不建议泛型仓储);N+1 查询治理(禁用延迟加载,用 Include 或 Select 投影,循环内查询改为 Contains 批量查询);行数限制与分页(推荐键集分页,偏移分页仅用于简单场景,API 层限制 pageSize);投影模式(Select 到 DTO,减少传输、跳过跟踪、消除 N+1)。

使用方式:示例使用 PostgreSQL(UseNpgsql),可替换为 SQL Server 或 SQLite 提供程序包,均需核心 Microsoft.EntityFrameworkCore 包。开发环境可启用 LogTo、EnableSensitiveDataLogging、EnableDetailedErrors 观察 SQL,并用 TagWith 标记查询。

适用场景:读多写少且查询复杂的 API、使用只读副本、需要明确聚合一致性的领域模型。简单 CRUD 建议先用单一 DbContext 加按查询 AsNoTracking()。

限制:不涉及 DbContext 生命周期、迁移、拦截器、编译查询等战术用法,也不涉及 EF Core/Dapper/ADO.NET 选型、DI 机制、异步模式、集成测试与 CI/CD,这些由其他技能覆盖。行数限制拦截器示例仅为简化示意,实际需表达式树分析,建议改用代码评审约定或分析器。