如何使用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.cs
和xx.edmx.diagram
之外,还有两个可用的xx.Designer.cs
,名为xx.Context.tt
和xx.tt
,其中xx
是edmx模型的名称。
这些是生成dbcontext和poco对象的t4模板。 您的所有poco对象都将在xx.tt
文件下创建, xx.tt
将在xx.tt
文件下xx.Context.tt
。
您现在必须将它们移动到单独的文件中。 如果您使用EF6,这会容易得多。 并且生成的文件已经在使用DbContext而不是ObjectContext。
我遇到了类似的情况,我将实体用于DTO的生成器。 虽然它的目的是生成DTO,但我相信它可以帮助你的人。