用途:为 EF Core 数据层提供战略性架构模式,指导如何组织数据层结构,而非编写单条查询(战术用法见 dotnet-efcore-patterns)。
主要能力:读写模型分离与 CQRS 模式;聚合边界设计与仓储策略;N+1 查询治理与行数限制;投影模式与查询优化策略。
使用方式:示例默认使用 PostgreSQL(UseNpgsql),可替换为 SQL Server(Microsoft.EntityFrameworkCore.SqlServer)或 SQLite(Microsoft.EntityFrameworkCore.Sqlite),均需核心 Microsoft.EntityFrameworkCore 包。读写分离可通过独立 WriteDbContext 与 ReadDbContext 实现,读上下文默认 NoTracking,可指向只读副本;聚合通过 OwnsMany 等配置,遵循整体加载、经聚合根保存、以 ID 引用其他聚合、保持聚合小、每事务一个聚合等规则;仓储与直接 DbContext 二选一,不建议泛型仓储。N+1 治理建议禁用延迟加载、使用 Include 或 Select 投影、用 TagWith 标记查询并在开发环境启用日志。分页推荐键集分页,偏移分页在大数据量下性能下降;行数限制建议通过代码评审约定、API 层页大小上限和查询标记落实。
适用场景:读多写多的 API、只读副本、CQRS 架构、复杂查询与报表。
限制:不涵盖战术 EF Core 用法、数据访问技术选型、DI 机制、异步模式与集成测试;简单 CRUD 应用建议先用单一 DbContext 加按查询 AsNoTracking()。资料未提供收费、价格与平台信息。