【问题标题】:Regenerate Entity Framework Code First Models重新生成实体框架代码优先模型
【发布时间】:2020-01-08 01:43:16
【问题描述】:

在带有 Visual Studio 2013 的 ASP.NET 项目中使用 Entity Framework 6 Code First,是否有任何方法可以重建(或更新)生成的 DataContext 和模型类,而无需每次都单步执行实体数据模型向导?

我完全了解如何使用 EDMX 设计器来做到这一点,但我再次使用“数据库中的代码优先”方法,只是想知道是否有一种单击(或一个控制台命令)的方式来每次我对后备数据库进行更改时,无需删除生成的上下文类,然后单步执行实体数据模型向导即可触发重建。

【问题讨论】:

  • 如果从数据库更改开始,为什么要先使用代码?
  • 这是一个常见的工作流程,因为“数据库中的代码优先”选项甚至存在,事实上,下一版本的 Entity Framework 完全取消了 EDMX 文件,因此它不会对我来说,使用在新项目中被有效弃用的东西是有意义的。
  • 首先使用代码更改模型并使用代码迁移来生成(并在需要时更改)更新数据库的代码。不是反过来。这就是为什么它首先被称为代码。见theregister.co.uk/2014/10/23/…
  • 不正确,请参阅 Rowan Miller 的声明:blogs.msdn.com/b/adonet/archive/2014/10/21/…“总结这一点的另一种方式是,Code First 不是数据库和模型优先的第三种替代方案,而是 EDMX 文件的替代方案从概念上讲,Code First 支持 Database First 和 Model First 工作流。 令人困惑……我们知道。我们的名字弄错了。将其称为“基于代码的建模”会更清楚。 "
  • 看看 EF Reverse POCO 模板,它是一个 .tt 文件,只需单击一下即可重新生成。

标签: c# asp.net entity-framework visual-studio-2013


【解决方案1】:

在 VS 2015(应该是 2013/2012)中,您可以使用实体框架反向 POCO 生成器来完成此操作。

https://visualstudiogallery.msdn.microsoft.com/ee4fcff9-0c4c-4179-afd9-7a2fb90f5838

您可以先对数据库进行所有更改,然后重新生成模型,您只需保存 Database.tt 文件(通常我只是添加空格)。

【讨论】:

    【解决方案2】:

    代码首先要求您手动创建 DataContext。您无需创建/更改数据库并刷新 DataContext 类。来自数据库的代码优先或 EF Reverse POCO 模板是真正的代码优先和数据库优先做事方法之间的中间地带。它通过生成与您在 Code First 中手动编写的相同类型的 POCO 类相遇。他们不以 Code First 方式执行此操作,但最终结果类似于 Code First。因此,令人困惑的名字。

    如果您使用这些模板之一来生成 POCO,您可以右键单击 t4 模板文件,然后单击运行自定义工具。如果这不起作用,您可能需要删除该实体,然后再次运行自定义工具。也可以右键单击 EDMX 并单击“从数据库更新模型”。

    【讨论】:

      【解决方案3】:

      我有没有向导的重建解决方案:

      使用 t4 是转换所有 T4 模板 并创建类

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-04
        • 1970-01-01
        • 2013-06-01
        • 2020-04-10
        • 2016-06-03
        • 1970-01-01
        • 2012-03-15
        • 1970-01-01
        相关资源
        最近更新 更多