自动迁移与基于代码的迁移

时间:2012-05-30 05:58:26

标签: entity-framework ef-migrations

我正在学习EF4.3迁移,我从ado.net团队博客上读过这两篇文章:

http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx

http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-automatic-migrations-walkthrough.aspx

但是在阅读了这两篇文章之后,我仍然不清楚它们之间的差异以及何时使用基于代码的迁移,何时使用自动迁移。有人可以指导我吗?

谢谢!

2 个答案:

答案 0 :(得分:22)

这些文章非常清楚,所以如果你不理解它的不同,就意味着你在阅读文本时没有集中注意力,而且你也可能没有按照自己编写的例子来跟随文本。

自动迁移只是一种神奇的工具。运行应用程序时,您将始终使用最新版本获取数据库,因为EF将在每次需要时执行隐式迁移 - 在最纯粹的版本中,除了启用自动迁移之外,您永远不需要执行任何操作。

自动迁移有时不够。您需要为迁移代码添加一些自定义或运行一些其他SQL命令,例如转换数据。在这种情况下,您可以通过调用Add-Migration命令添加基于代码的显式迁移。显式迁移显示了将在迁移期间执行的所有迁移代码(没有额外的魔法)。

如果关闭自动迁移,则必须始终定义显式迁移,以便在明确定义的显式步骤中定义数据库升级过程。这对于需要同时使用升级和降级到特定版本的情况特别有用。

答案 1 :(得分:-2)

MSDN有关于您的问题的更多信息。他们不建议在团队开发方案中混合使用自动和基于代码的迁移。但我不清楚它可以创造什么问题。