🚀 快速安装
复制以下命令并运行,立即安装此 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 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)