2011-05-24 58 views
2

我一直在使用Code-First方法与EntityFramework一起尝试ASP.NET MVC 3。有几个我面临的问题。Nuget CodeFirst EntityFramework迁移或同步数据库

  1. 如何同步的数据库,如果架构更改和/或更新我的模型。现在我必须删除并重新创建数据库,从而丢失所有数据。是否有可用的包我可以用来自动更新架构。在其中一个演示中,我看到Scott Hanselman使用“EntityFramework.Migration”包。我想这是不公布的使用。任何替代品?

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

谢谢先进。

+0

检查了这一点 - [EntityFramework.SchemaCompare(https://github.com/kriasoft/data) – 2011-12-15 14:07:12

回答

1

关于您的数据丢失问题,请使用数据库initializer类进行调查。每次模型更改时都可以为数据创建种子数据。我知道这并不理想,但现在我们只有EF 4.1。你可以使用类似Red Gate's SQL tool-belt的东西来保持环境同步。作为软件包的一部分,您可以同步数据。您可以随时备份由SQLToolbelt创建的脚本。

2

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

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

我不知道关于你的第二个问题。我个人不使用自动生成视图,但是,我相信你应该可以修改T4模板来按照你想要的方式生成你的视图。

+0

谢谢您的回答。第二个问题更多的是关于在视图中保留CSS样式。任何时候脚手架运行它会覆盖并重新创建视图,因此添加到视图的任何CSS类都会被默认的ASP.NET MVC主题覆盖。 – Amir 2011-05-31 04:08:30

+1

+1进行迁移。说“种子数据库”太容易了,但这仅仅适用于开发环境。 – 2011-09-22 14:11:45

0

对于脚手架问题,只需更改脚手架模板本身,以便它们包含CSS类。这样,无论什么时候你重新脚手架,CSS类将在那里。

More about this here