【问题标题】:Nuget CodeFirst EntityFramework Migration or Sync DBNuget CodeFirst EntityFramework 迁移或同步数据库
【发布时间】:2014-11-13 07:18:21
【问题描述】:

我一直在尝试使用 EntityFramework 的 Code-First 方法的 ASP.NET MVC 3。我面临几个问题。

  1. 如果架构更改和/或我更新我的模型,我如何同步数据库。现在我必须删除并重新创建数据库,从而丢失我所有的数据。是否有可用的软件包可用于自动更新架构。在其中一个演示中,我看到 Scott Hanselman 使用“EntityFramework.Migration”包。我猜这不是发布使用。有其他选择吗?

  2. MvcScaffolding 重新创建所有视图/控制器。如果执行 MVCScaffolding 并重新创建视图,是否有办法在视图中保留 CSS 样式。

提前致谢。

【问题讨论】:

标签: asp.net-mvc asp.net-mvc-3 entity-framework-4.1


【解决方案1】:

有多种工具可以为数据库生成更改脚本。就实体框架本身而言,即将推出的 EntityFramework.Migrations 也将处理此问题。

http://blogs.msdn.com/b/efdesign/archive/2010/10/22/code-first-database-evolution-aka-migrations.aspx

我不确定你的第二个问题。我个人不使用视图的自动生成,但是,我相信您应该能够修改 T4 模板以按照您想要的方式生成视图。

【讨论】:

  • 感谢您的回答。第二个问题更多是关于在视图中保留 CSS 样式。每当 Scaffold 运行时,它都会覆盖并重新创建视图,因此添加到视图中的任何 CSS 类都会被默认的 ASP.NET MVC 主题覆盖。
  • +1 用于迁移。说“为数据库播种”太容易了,但这仅对开发环境有好处。
【解决方案2】:

关于您的数据丢失问题,请考虑使用数据库initializer 类。您可以在每次模型更改时播种数据。我知道这并不理想,但这是我们现在使用 EF 4.1 所拥有的一切。您可以使用 Red Gate's SQL tool-belt 之类的东西来保持环境同步。作为包的一部分,您可以同步数据。您可以随时备份 SQLToolbelt 创建的脚本。

【讨论】:

    【解决方案3】:

    对于脚手架问题,只需更改脚手架模板本身,使其包含 CSS 类。这样,每当你重新搭建脚手架时,CSS 类就会在那里。

    More about this here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-26
      • 2013-11-30
      • 2012-03-10
      • 2012-06-05
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 2020-02-09
      相关资源
      最近更新 更多