mcpField
E
ef-core

ef-core

github.com/github开发40.5k9.6k 次安装今天更新
代码仓库

关于 ef-core

面向编写或审查 EF Core 代码的开发者,提供 Entity Framework Core 实践指导,涵盖数据建模、查询、性能、迁移、安全和测试。

主要功能

  1. 01DbContext 与实体设计指导
  2. 02查询和性能建议
  3. 03迁移与更改跟踪实践
  4. 04安全与测试指导

适用场景

  1. 01审查 EF Core 代码并寻找改进点
  2. 02规划数据模型、查询或迁移
  3. 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