34

在 EF 项目中,是否有设置AutomaticMigrationsEnabled的最佳实践?

更多声明:

在我们的团队中,修改模型后,我们通常在包管理器控制台中运行“add-migration”和“update-databse”命令。当其他开发人员运行项目时会引发此错误:

“无法删除数据库,因为它正在使用中”

每次发生这种情况时,第一个修改器应该是Check In整个项目,而其他修改器必须GET修改对象。在许多情况下,我们不想检查已经创建的模型和迁移!

这种情况很烦人,有没有解决这种问题的办法。提前致谢。

4

2 回答 2

47

自动迁移为你做了所有的魔法,但它们不允许严格的版本控制(你没有每个版本的特殊固定迁移)。如果没有严格的版本控制,您将无法跟踪数据库的版本,也无法进行显式升级(根本无法进行降级)。

如果您不打算在需要知道数据库版本的地方使用版本控制,并且如果您不打算使用降级,则可以简单地使用自动迁移。

“无法删除数据库,因为它正在使用中”

看起来您正在处理共享数据库 = show stopper。每个开发人员都应该使用自己的数据库。

但不想检查已经创建的模型和迁移!

这是一个最佳实践,如果您想继续进行基于代码的迁移,您将必须遵循它。顺便提一句。有一种称为“持续集成”的做法 - 在持续集成中,您应该在提交成功构建并通过测试后立即获得。

于 2012-08-05T09:07:56.680 回答
14

来自:http: //msdn.microsoft.com/en-us/data/jj554735.aspx

对团队环境的建议

您可以穿插自动和基于代码的迁移,但不建议在团队开发场景中这样做。如果您是使用源代码控制的开发人员团队的一员,您应该使用纯自动迁移或纯基于代码的迁移。鉴于自动迁移的局限性,我们建议在团队环境中使用基于代码的迁移。

于 2013-06-14T16:51:54.040 回答