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

And*_*ena 13 .net c# entity-framework

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

我测试了一些方法:

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

我的要求:

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

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

小智 1

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

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

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

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