mcpField
E
entity-framework6

entity-framework6

github.com/managedcode数据与数据库49639 次安装今天更新
代码仓库

关于 entity-framework6

面向维护 EF6 应用或评估迁移到 EF Core 的团队提供指导。它先盘点实际使用的 EF6 功能,并将运行时升级与 ORM 迁移分开规划。

主要功能

  1. 01盘点 EF6 特有模式
  2. 02区分运行时与 ORM 升级
  3. 03规划有界上下文迁移
  4. 04使用真实数据库验证
  5. 05应用 EF6 维护实践

适用场景

  1. 01评估基于 EDMX 的旧数据层
  2. 02保留 EF6 并升级运行时
  3. 03规划 EF Core 迁移
  4. 04测试迁移后的查询与行为

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/managedcode/dotnet-skills --skill entity-framework6

安装后在 Claude Code 中输入/entity-framework6确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

manifest.json
references/
migration.md
patterns.md

详细介绍

Entity Framework 6

适用场景

  • 在基于 .NET Framework 或现代 .NET 的 EF6 代码库中工作
  • 决定继续使用 EF6、迁移到现代 .NET 运行时,还是移植到 EF Core
  • 审查 EDMX、Code First,或旧版 ASP.NET/WPF/WinForms 数据访问代码
  • 规划数据层迁移策略

工作流

  1. 规划任何迁移之前,先审查当前的 EF6 使用情况。 确定代码库依赖哪些功能:

    // Common EF6-specific patterns to inventory:
    // - EDMX designer models (check for *.edmx files)
    // - ObjectContext vs DbContext usage
    // - Lazy loading with virtual navigation properties
    // - Database.SqlQuery<T>() for raw SQL
    // - Stored procedure mappings in model
    // - Spatial types (DbGeography, DbGeometry)
    
  2. 分别决定运行时迁移与 ORM 迁移:

    路径适用场景
    在 .NET Framework 上继续使用 EF6无运行时升级需求的旧版应用
    在现代 .NET 上使用 EF6需要升级运行时,但 ORM 迁移风险过高
    EF6 → EF Core数据层简洁、不使用 EDMX,且存储过程映射最少
  3. 维护工作——保持 EF6 稳定:

    • 使用存储库和工作单元模式隔离数据访问(参见 references/patterns.md)
    • 新代码优先使用 DbContext 而非 ObjectContext
    • 对只读查询使用 AsNoTracking()
    • 使用 [ConcurrencyCheck] 或 IsRowVersion() 配置并发令牌
  4. 迁移工作——逐个验证迁移切片:

    • 将 EF6 功能映射到 EF Core 对应功能(参见 references/migration.md)
    • 一次迁移一个有明确边界的上下文,而非整个数据层
    • 使用真实数据库提供程序运行集成测试,而非 InMemory
    • 验证:dotnet ef migrations add 能否成功、查询结果是否等效、延迟加载行为是否符合预期
  5. 不要向 EF6 代码库承诺 EF Core 的功能——EF6 稳定且受支持,但不在创新发展路线中。应保持合理预期。

当前上游说明

  • 2026 年 8 月的 EF Core 与 EF6 对比说明,将 ORM 迁移决策与运行时现代化分开处理。EF6 仍受支持,但不再积极开发;当 EDMX、ObjectContext 或复杂的旧版映射构成主要风险时,继续使用 EF6 仍可能是正确选择。
  • EF Core v10.0.11 的维护更新并不意味着 EF Core 可直接替换 EF6,也不会自行改变 EF6 的使用建议;只有在项目存在边界明确的迁移切片和基于数据库的等效性测试时,才进行迁移。
flowchart LR
  A["Audit EF6 usage"] --> B{"EDMX or complex mappings?"}
  B -->|Yes| C["High migration cost — consider keeping EF6"]
  B -->|No| D["Evaluate EF Core migration"]
  D --> E["Migrate one context at a time"]
  E --> F["Integration test against real DB"]
  C --> G["Modernize runtime only"]
  F --> H["Validate query equivalence"]
  G --> H

交付内容

  • 根据对实际代码库的审查,提供切实可行的 EF6 维护或迁移建议
  • 明确区分运行时升级和 ORM 升级工作
  • 将迁移划分为有明确边界的切片,并提供具体验证检查点
  • 降低旧版数据访问代码变更的风险

验证

  • 开始规划迁移之前,完整盘点 EF6 功能
  • 迁移假设以实际功能使用情况为依据,而非猜测
  • 及早识别仅 EF6 支持的功能(EDMX、空间类型、ObjectContext 模式)
  • 使用真实数据库提供程序运行集成测试,而非模拟对象或 InMemory
  • 所提方案避免对稳定的数据访问代码进行不必要的改动

参考资料

  • references/migration.md - 决策框架、迁移方法、EF6 到 EF Core 的功能映射及常见陷阱
  • references/patterns.md - EF6 代码库的存储库和工作单元模式、查询优化、并发处理、审计及测试策略

评论

支持 Markdown