AutomaticMigrationsEnabled为false还是true?

时间:2012-08-04 06:46:17

标签: entity-framework entity-framework-4 ef-migrations

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

更多宣言:

在我们的团队修改模型后,我们通常在Package Manager Console中运行“add-migration”和“update-databse”命令。当其他开发人员运行项目时,会出现此错误:

  

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

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

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

2 个答案:

答案 0 :(得分:45)

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

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

  

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

看起来你正在使用shared database = show stopper。每个开发人员都应使用自己的数据库

  

但不想签出已创建的模型和迁移!

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

答案 1 :(得分:11)

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

  

团队环境建议

     

您可以散布自动和基于代码的迁移,但这是   不建议在团队开发方案中使用。如果你是一个人的一部分   使用源代码控制的开发人员团队应该使用   纯粹的自动迁移或纯粹基于代码的迁移。鉴于   我们建议使用基于代码的自动迁移限制   团队环境中的迁移。