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

我正在将广泛的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进行C# 。 这会在设计时触发exception。 我无法使用它。 我不知道是不是因为我的VSentity framework工具已经更新到6.x. 在评论中使用替代TT,这表明它可以与EF 6.0一起使用也没有帮助。
  • 使用EntityFramework反向POCO生成器 。 这是最糟糕的,因为它不会考虑我的任何类和导航属性重命名。
  • 使用entity frameworkPower Tools Beta 4 。 同样,它仅支持从数据库生成,而不支持从EDMX文件生成。

我的要求:

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

你觉得什么对我来说是个不错的选择?

好吧,我认为没有一个简单的单击解决方案。

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

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

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

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

https://entitiestodtos.codeplex.com/