用途:该技能用于设计数据访问层、优化慢查询、在 EF Core 与 Dapper 之间选型,并规避常见性能陷阱。
主要能力与原则:读写模型分离(CQRS),读模型反规范化、返回多种投影(如 UserProfile、UserSummary),写模型规范化、接收强类型命令(如 CreateUserCommand);避免 N+1 查询;只取所需列,不用 SELECT *;每个读方法都带可配置的 Take/Limit;连接在 SQL 中完成,不在应用代码中做;只读查询使用 AsNoTracking,因为 EF Core 变更跟踪开销大。
使用方式:读存储接口返回多个专用 DTO 或布尔值,写存储接口只返回创建 ID 或 void;分页查询用 Skip/Take 并始终限制行数;N+1 可用 Include 或 Dapper 批量查询解决;多 Include 可能产生笛卡尔积,可用 AsSplitQuery 或显式投影;在 EF Core 模型中用 HasMaxLength 约束列长度;避免通用仓储,改用按用途定制的读写存储;读密集场景可用 Dapper 写显式 SQL,写操作与校验用 EF Core,两者可同项目共存。
适用场景:.NET 应用的数据访问层设计、查询优化、EF Core 与 Dapper 选型。
限制:资料未提供具体性能数据、版本要求或安装命令;示例代码为示意,实际需按项目调整。