Entity Framework 6从现有表创建模型

4
我们需要维护一个非常老的应用程序。有一个旧部分(所有数据访问都使用存储过程处理),自从我的前任接管了该应用程序后,他们开始为新需求构建一个新的部分,该部分使用实体框架6进行访问。
现在客户有一个新的需求,需要访问其中一张表格,但是还没有对应的EF模型。
是否有一种简单的方法可以从现有数据库表格自动创建EF模型?(我只需要这个表格,而不是整个剩余数据库!)您知道任何可以实现此目的的工具吗,还是我必须手写?
谢谢。

1
下面有两种不同的答案风格,一种假设您正在使用Code First,另一种假设您正在使用实体数据模型(edmx)文件。您没有指定所需的模型格式。 - pseudocoder
你好 @pseudocoder 你是对的。我正在使用 Code First. :-) - xeraphim
4个回答

4
我使用Visual Studio插件EF Power Tools在此下载
有了这个插件,你可以反向工程化你的数据库,以便在应用程序中创建对象和映射。尽管它能为你节省大量时间,但请注意它并不完美。你可能需要检查索引和关系,因为在我的情况下一些内容是缺失的。
反向工程化你的数据库很简单:
引用自Microsoft:
“Reverse Engineer Code First”命令用于生成基于现有数据库的POCO、映射(配置)和派生DbContext类。
右键单击项目并选择Entity Framework -> Reverse Engineer Code First
输入有关现有数据库的信息,您想要借此反向工程化Code First。
你可以通过访问以下链接获取完整的示例: https://msdn.microsoft.com/en-us/data/jj593170.aspx 重要提醒:从Entity Framework 7开始(目前还未发布),只有Code First方法将被使用。因此,在选择Model First等其他方法之前,可能需要考虑这一点。详细信息可参见:EF7 - What Does “Code First Only” Really Mean

据我所知,EF 7并不是EF 6的直接继承者。EF 7是与EF6完全不同的路径,现在是EF6的轻量级版本。随着时间的推移,EF 7也将获得这些功能。因此,不要依赖于选择EF 6还是EF 7来解决问题。 - jonas
当我继承一个模型优先的项目时,我遇到了很多限制。我阅读了大量关于EF和限制的文章,并决定转向Code First。你可能想要查看Rowan Miller的博客(romiller.com)并找到EF团队的其他成员并关注他们的工作。我没有明确的列表。我只是经常使用Google! :-) - Maxime
@jonas: 我同意你的看法。但是如果你现在开始一个项目,我认为你真的应该考虑它。它可能不是一个“直接的继承者”,但它也不会是一个完全不同的产品,迁移将是可能的。我希望这种迁移尽可能顺利。 - Maxime
如果你有很多数据表,你可能希望从你的实际数据库中创建一个只包含你需要的表的新数据库。 - Maxime
@Maxime:“我们不会在支持ASP.NET 5的初始发布时将EF7推荐为所有平台的首选版本。EF7将成为ASP.NET 5应用程序的默认数据堆栈,但在其他应用程序中,我们不会建议它作为EF6的替代品,直到我们实现更多功能。”来源:http://www.wintellect.com/devcenter/tsneed/when-should-you-make-the-move-to-entity-framework-7 - jonas
显示剩余3条评论

3
打开实体数据模型(edmx)文件(如果您没有,请创建一个),在空白区域上右键单击设计表面,然后选择“从数据库更新模型”选项。
如果提示,请选择正确的连接字符串,然后选择“添加”选项卡,浏览到您想要添加的数据库表并在旁边打勾。最后点击"完成"即可。

2

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接