如何使用EDMX文件中的映射生成Entity Framework 6.x POCO类?

时间:2014-12-10 16:12:47

标签: c# .net entity-framework

我正在将广泛的EDMX模型转换为POCO类。我需要从Database First方法(带有ObjectContext的EDMX)到纯模型优先方法(没有EDMX文件的DbContext)。我需要使用最新的Entity Framework稳定版:6.1.1。

我测试了一些方法:

  • 通过右键单击EDMX设计器中的空白区域来添加EF 6.x DbContext Generator代码生成项。这样可以正常工作,但它不会添加任何映射。使用这种方法,我还是要使用EDMX文件。它没有完整的Code First。
  • 使用EF 5.x DbContext Fluent Generator for C#。这会在设计时触发异常。我无法使用它。我不知道是否因为我的VS实体框架工具已经更新到6.x.在评论中使用替代TT,表明它可以与EF 6.0一起使用也无济于事。
  • 使用EntityFramework Reverse POCO Generator。这是最糟糕的,因为它不会考虑我的任何类和导航属性重命名。
  • 使用Entity Framework Power Tools Beta 4。同样,它仅支持从数据库生成,而不支持从EDMX文件生成。

我的要求:

  • 我需要输入为EDMX文件,而不是数据库。
  • 我需要输出为Fluent映射的完整Code First方法。
  • 我需要考虑在EDMX中定义的所有导航属性名称,否则会破坏大型代码库,甚至更多,然后从ObjectContext迁移到DbContext将会中断。

你认为我选择什么是一个不错的选择?

2 个答案:

答案 0 :(得分:1)

嗯,我认为没有简单的一键解决方案。

您下面是edmx文件。除了xx.Designer.csxx.edmx.diagram之外,您还有两个文件可用,名为xx.Context.ttxx.tt,其中xx是您的edmx模型的名称。

这些是生成dbcontext和poco对象的t4模板。您的所有poco对象都将在xx.tt文件下面创建,dbcontext位于xx.Context.tt文件下面。

您现在必须将它们移动到单独的文件中。如果您使用EF6,这会容易得多。并且生成的文件已经在使用DbContext而不是ObjectContext。

答案 1 :(得分:0)

我遇到了类似的情况,我将实体用于DTO的发电机。 虽然它的目的是生成DTO,但我相信它可以帮助你的人。

https://entitiestodtos.codeplex.com/