重新生成 Entity Framework Code First 模型

5
在使用Visual Studio 2013 的ASP.NET项目中,使用Entity Framework 6 Code First,有没有一种方法可以在不每次都经过实体数据模型向导的情况下重建(或更新)生成的DataContext和模型类?我完全知道如何使用EDMX设计器完成此操作,但是由于我正在使用“从数据库Code First”的方法,所以想知道是否有一种一键式(或一个控制台命令)的方式来触发重建,而不必每次更改支撑数据库时都删除生成的上下文类并经过实体数据模型向导。

1
如果你是从数据库变更开始的,为什么要使用Code First呢? - L-Four
3
考虑到已经存在“从数据库生成Code-First”的选项,这是一个常见的工作流程。实际上,Entity Framework 的下一个版本将完全取消使用 EDMX 文件,因此在新项目中使用被弃用的东西对我来说没有意义。我的建议是使用新的方法。请注意,我的翻译旨在保持原意并提高易懂性,不包括额外的解释或信息。 - Brad Westness
使用Code First,您可以更改模型并使用代码迁移生成(如果需要则更改)更新数据库的代码。而不是相反。这就是为什么它被称为Code First。请参阅http://www.theregister.co.uk/2014/10/23/entity_framework_goes_codefirst_only_as_microsoft_shutters_yet_another_visual_modelling_tool/。 - L-Four
4
不正确,参见Rowan Miller在这里的声明:http://blogs.msdn.com/b/adonet/archive/2014/10/21/ef7-what-does-code-first-only-really-mean.aspx"可以这样概括,与数据库和模型优先两种方式相比,Code First 实际上是 EDMX 文件格式的一种替代方式。从概念上讲,Code First 支持数据库优先和模型优先两种工作流程。有些令人困惑…我们知道了。我们取错了名字。像“基于代码建模”这样的命名会更加清晰明了。" - Brad Westness
啊,但那是逆向工程。首先生成代码,然后再重新生成。我以为你有一个领域模型,但似乎不是这样的情况。 - L-Four
2
请查看EF Reverse POCO模板,它是一个.tt文件,可以让您通过单击一次即可重新生成。 - ErikEJ
3个回答

0

我有一个无需向导重建的解决方案:

使用T4可以转换所有T4模板并创建类


0

编码优先要求您手动创建数据上下文。您不会创建/更改数据库和刷新数据上下文类。从数据库的代码优先或EF反向POCO模板是真正的代码优先和数据库优先方法之间一个折中方案。它通过生成与手动编写代码优先中一样的POCO类来在中间满足需求。它们没有采用代码优先的方式,但最终结果类似于代码优先。这就是名称混乱的原因。

如果您正在使用其中一种模板生成POCO,请右键单击t4模板文件并单击“运行自定义工具”。如果无法正常工作,则可能需要删除该实体,然后再次运行自定义工具。此外,右键单击EDMX并单击“从数据库更新模型”也应该有效。


0

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