在EF项目中,是否有设置 AutomaticMigrationsEnabled 的最佳做法?
更多宣言:
在我们的团队修改模型后,我们通常在Package Manager Console中运行“add-migration”和“update-databse”命令。当其他开发人员运行项目时,会出现此错误:
“无法删除数据库,因为它正在使用”
每次发生这种情况时,第一个修饰符应该是Check In
整个项目,而其他修饰符必须GET
修改过的对象。在许多情况下,我们不想检查已经创建的模型和迁移!
这种情况很烦人,有没有解决这类问题的方法。 提前谢谢。
答案 0 :(得分:45)
自动迁移为您提供了所有的魔力,但它们不允许严格的版本控制(您没有针对每个版本进行特殊的固定迁移)。如果没有严格的版本控制,您无法跟踪数据库的版本,也无法进行显式升级(根本无法降级)。
如果您不打算在需要知道数据库版本的地方使用版本控制,如果您不打算使用降级,则只需使用自动迁移。
“无法删除数据库,因为它正在使用”
看起来你正在使用shared database = show stopper。每个开发人员都应使用自己的数据库
但不想签出已创建的模型和迁移!
这是一种最佳做法,如果您想继续进行基于代码的迁移,则必须遵循它。顺便说一句。有一种称为“持续集成”的做法 - 在持续集成中,您应该在成功构建提交并通过测试后立即获取。
答案 1 :(得分:11)
来自:http://msdn.microsoft.com/en-us/data/jj554735.aspx
团队环境建议
您可以散布自动和基于代码的迁移,但这是 不建议在团队开发方案中使用。如果你是一个人的一部分 使用源代码控制的开发人员团队应该使用 纯粹的自动迁移或纯粹基于代码的迁移。鉴于 我们建议使用基于代码的自动迁移限制 团队环境中的迁移。