将Entity Framework EDMX转换为Code First的工具

Stu*_*ang 33 .net entity-framework code-first edmx

是否有工具将edmx转换为代码优先?我知道有一段时间在CTP中出现了一个,但我找不到与此相关的任何更新.

MSDN论坛上有一个人写了他自己的(现在还没有),但EF团队没有.

Der*_*nch 30

使用EF6 Tools和Visual Studio 2013或Visual Studio 2012,您可以首先从数据库中获取选项代码(请参见下面的屏幕截图)

在此输入图像描述

如果您没有看到此选项,则需要为Visual Studio 2012和2013安装Entity Framework 6工具 http://www.microsoft.com/en-gb/download/details.aspx?id=40762

这不会首先将EDMX转换为代码(如所请求的那样),但它可以首先从现有数据库创建代码(我假设有人想从EDMX执行此操作,将拥有现有数据库,除非他们删除了他们的数据库).

  • 这并不能回答问题。 (2认同)

Pil*_*Bob 27

时代在变.有几个生成器将使用EDMX作为源创建代码优先实体和映射.扩展库中有几个.您最有可能想要使用的是用于C#的EF 5.x DBContextFluent Generator.http://visualstudiogallery.msdn.microsoft.com/5d663b99-ed3b-481d-b7bc-b947d2457e3c

还有EF 5.x DbContect Generator,iirc将映射信息放在模型上.

安装完其中任何一个后,您可以编辑EDMX并右键单击"添加代码生成项".这将安装.tt模板并生成实体类,DbContext类和映射文件.

请注意,如果您有任何部分验证,如果您将它们放在与您的edmx相同的文件夹中,并且它们将被覆盖.您只需要重命名这些部分,因为生成器确实将partial关键字放在实体上,或者更好的是,将该代码移动到新生成的实体类中.

一旦这些文件到位,您就可以删除.tt文件和.edmx文件,然后继续在代码中维护您的实体.


Lad*_*nka 10

没有这样的工具,因为EDMX提供了更多无法转换为代码优先的功能.唯一可用的工具是EF Power Tools CTP1,它允许从现有数据库创建代码优先映射,但它只会创建数据库的1:1映像=基于数据库的命名,没有继承,没有拆分等.电动工具也允许创建从现有的代码优先映射中只读EDMX.

  • "没有这样的工具,因为EDMX提供了更多无法转换为代码优先的功能",这对我来说没有意义.完全没有.如果可以从数据库创建类,则应该能够从完全相同的类创建类似的数据库.当然,EF制作了更多无法翻译的东西,但他们当然可以获得数据库的要点.说不然只是听起来很狂热.就像"无论他们做什么都是最好的,可以做到,不要质疑它." (18认同)
  • 如果不能做到,@ LadislavMrnka,那么他们做错了.似乎很荒谬,这是无法做到的.绝对令人难以置信的愚蠢.再一次:如果不能这样做,那么他们就做错了. (9认同)
  • @vbullinger:没有人说这些功能将来不会出现在代码中.它被称为迭代增量开发.没有公司在第一版中提供具有所有可能功能的软件.如果您认为它太错误了,您可以随时参与使其正确 - EF是开源的. (5认同)
  • 好吧,据我所知,MSFT放弃了Model First,现在所有的努力都进入Code First.数据注释,ASP.NET身份是Model First的两个最大缺失功能. (3认同)