关于 entity-framework6
面向维护 EF6 应用或评估迁移到 EF Core 的团队提供指导。它先盘点实际使用的 EF6 功能,并将运行时升级与 ORM 迁移分开规划。
主要功能
- 01盘点 EF6 特有模式
- 02区分运行时与 ORM 升级
- 03规划有界上下文迁移
- 04使用真实数据库验证
- 05应用 EF6 维护实践
适用场景
- 01评估基于 EDMX 的旧数据层
- 02保留 EF6 并升级运行时
- 03规划 EF Core 迁移
- 04测试迁移后的查询与行为
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ managedcode/ dotnet-skills --skill entity-framework6安装后在 Claude Code 中输入/entity-framework6确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
manifest.jsonreferences/migration.mdpatterns.md详细介绍
Entity Framework 6
适用场景
- 在基于 .NET Framework 或现代 .NET 的 EF6 代码库中工作
- 决定继续使用 EF6、迁移到现代 .NET 运行时,还是移植到 EF Core
- 审查 EDMX、Code First,或旧版 ASP.NET/WPF/WinForms 数据访问代码
- 规划数据层迁移策略
工作流
-
规划任何迁移之前,先审查当前的 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) -
分别决定运行时迁移与 ORM 迁移:
路径 适用场景 在 .NET Framework 上继续使用 EF6 无运行时升级需求的旧版应用 在现代 .NET 上使用 EF6 需要升级运行时,但 ORM 迁移风险过高 EF6 → EF Core 数据层简洁、不使用 EDMX,且存储过程映射最少 -
维护工作——保持 EF6 稳定:
- 使用存储库和工作单元模式隔离数据访问(参见 references/patterns.md)
- 新代码优先使用
DbContext而非ObjectContext - 对只读查询使用
AsNoTracking() - 使用
[ConcurrencyCheck]或IsRowVersion()配置并发令牌
-
迁移工作——逐个验证迁移切片:
- 将 EF6 功能映射到 EF Core 对应功能(参见 references/migration.md)
- 一次迁移一个有明确边界的上下文,而非整个数据层
- 使用真实数据库提供程序运行集成测试,而非 InMemory
- 验证:
dotnet ef migrations add能否成功、查询结果是否等效、延迟加载行为是否符合预期
-
不要向 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