【发布时间】:2014-12-10 16:12:47
【问题描述】:
我正在将一个广泛的 EDMX 模型转换为 POCO 类。我需要从数据库优先方法(带有 ObjectContext 的 EDMX)到纯模型优先方法(没有 EDMX 文件的 DbContext)。我需要使用最新的实体框架稳定版本:6.1.1。
我已经测试了一些方法:
- 通过右键单击 EDMX 设计器中的空白区域添加
EF 6.x DbContext Generator代码生成项。这工作正常,但它不添加任何映射。使用这种方法,我仍然必须使用 EDMX 文件。这不是完整的 Code First。 - 使用EF 5.x DbContext Fluent Generator for C#。这会在设计时触发异常。我无法使用它。我不知道是不是因为我的 VS Entity Framework 工具已经更新到 6.x。在 cmets 中使用替代 TT,这表明它可以与 EF 6.0 一起使用也无济于事。
- 使用EntityFramework Reverse POCO Generator。这是最糟糕的,因为它不会考虑我的任何类和导航属性重命名。
- 使用Entity Framework Power Tools Beta 4。同样,它只支持从数据库生成,不支持从 EDMX 文件生成。
我的要求:
- 我需要输入 EDMX 文件,而不是数据库。
- 我需要输出是具有 Fluent 映射的完整 Code First 方法。
- 我需要考虑在 EDMX 中定义的所有导航属性名称,否则它会破坏大型代码库,甚至从 ObjectContext 迁移到 DbContext 会破坏。
你觉得我去哪里比较好?
【问题讨论】:
-
Visual Studio 中的实体框架电动工具扩展,visualstudiogallery.msdn.microsoft.com/…
-
谢谢@dotctor,但 Entity Framework Power Tools 不支持从 EDMX 文件生成 POCO 和映射,只能从数据库服务器生成。
-
您可以从您的 edmx 生成一个虚拟数据库,然后对其进行逆向工程以生成您的 pocos
-
@dotctor,我不能,因为无法从数据库中推断出反向导航属性名称。相信我,模型很大。但我感谢您尝试提供帮助。
-
我很确定我以前见过这个问题并且答案一直是“不”。显而易见的第一步是首先迁移到
DbContext。这可能会让您有些头疼,但是您可以享受更好的 API 带来的所有好处。作为下一步,您可以考虑引入逐渐接管部分旧上下文的有界代码优先上下文。当模型“巨大”时,拥有几个较小的上下文可能是个好主意。
标签: c# .net entity-framework