🚀 快速安装

复制以下命令并运行,立即安装此 Skill:

npx @anthropic-ai/skills install github/awesome-copilot/ef-core

💡 提示:需要 Node.js 和 NPM

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 应用中使用作用域)

安全性

  • 通过使用参数化查询避免 SQL 注入
  • 实施适当的数据访问权限
  • 谨慎使用原始 SQL 查询
  • 考虑对敏感信息进行数据加密
  • 使用迁移来管理数据库用户权限

测试

  • 对单元测试使用内存数据库提供程序
  • 为集成测试创建带有 SQLite 的单独测试上下文
  • 为纯单元测试模拟 DbContext 和 DbSet
  • 在隔离环境中测试迁移
  • 对模型更改考虑快照测试

在审查我的 EF Core 代码时,请识别问题并提出遵循这些最佳实践的改进建议。

📄 原始文档

完整文档(英文):

https://skills.sh/github/awesome-copilot/ef-core

💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。