关于 ef-core
面向编写或审查 EF Core 代码的开发者,提供 Entity Framework Core 实践指导,涵盖数据建模、查询、性能、迁移、安全和测试。
主要功能
- 01DbContext 与实体设计指导
- 02查询和性能建议
- 03迁移与更改跟踪实践
- 04安全与测试指导
适用场景
- 01审查 EF Core 代码并寻找改进点
- 02规划数据模型、查询或迁移
- 03检查数据库访问和测试实践
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ github/ awesome-copilot --skill ef-core安装后在 Claude Code 中输入/ef-core确认已加载。
详细介绍
Entity Framework Core 最佳实践
你的目标是在使用 Entity Framework Core 时帮助我遵循最佳实践。
数据上下文设计
- 保持 DbContext 类职责专注且内聚
- 对配置选项使用构造函数注入
- 重写 OnModelCreating 以进行 Fluent API 配置
- 使用 IEntityTypeConfiguration 分离实体配置
- 考虑为控制台应用或测试使用 DbContextFactory 模式
实体设计
- 使用有意义的主键(考虑自然键与代理键)
- 实现正确的关系(一对一、一对多、多对多)
- 使用数据注解或 Fluent API 来定义约束和验证
- 实现适当的导航属性
- 考虑对值对象使用自有实体类型
性能
- 对只读查询使用 AsNoTracking()
- 对大型结果集使用 Skip() 和 Take() 实现分页
- 在需要时使用 Include() 预先加载相关实体
- 考虑使用投影(Select)仅检索所需字段
- 对频繁执行的查询使用编译查询
- 通过正确包含相关数据来避免 N+1 查询问题
迁移
- 创建小型、专注的迁移
- 为迁移起描述性的名称
- 在应用到生产环境之前验证迁移 SQL 脚本
- 考虑使用迁移捆绑包进行部署
- 在适当的时候通过迁移添加数据种子
查询
- 明智地使用 IQueryable,并了解查询何时执行
- 优先使用强类型 LINQ 查询而非原始 SQL
- 使用适当的查询运算符(Where、OrderBy、GroupBy)
- 对复杂操作考虑使用数据库函数
- 为可复用查询实现规约模式
变更跟踪与保存
- 使用适当的变更跟踪策略
- 批量执行 SaveChanges() 调用
- 为多用户场景实现并发控制
- 对多个操作考虑使用事务
- 使用适当的 DbContext 生存期(Web 应用使用 scoped)
安全
- 通过使用参数化查询避免 SQL 注入
- 实现适当的数据访问权限
- 谨慎使用原始 SQL 查询
- 对敏感信息考虑数据加密
- 使用迁移管理数据库用户权限
测试
- 对单元测试使用内存数据库提供程序
- 对集成测试使用 SQLite 创建独立的测试上下文
- 对纯单元测试模拟 DbContext 和 DbSet
- 在隔离环境中测试迁移
- 对模型变更考虑使用快照测试
在审查我的 EF Core 代码时,请识别问题并建议遵循这些最佳实践的改进。
评论
支持 Markdown