EF7 migration add
命令(迄今为止,beta5)将DbContext
中定义的模型类与当前模型快照进行比较,创建新的迁移类,并更新模型快照。
我需要修改迁移以使其生成不同的DDL SQL。例如,EF7使用SQL Server自动增量值的序列,我希望它使用标识。然而,这可能是任何其他原因。 migration remove
命令将物理删除迁移文件并还原模型快照,因此在这种情况下它无用。
有3个文件包含看起来需要编辑的相关代码:
Up
和Down
方法。DbContextModelSnapshot
文件包含需要修改的注释[migration].Designer.cs
文件还包含迁移的模型快照。我假设这个快照需要匹配第2项中的模型快照,但我不确定。我对其目的的唯一信息来自Brice's blog ,其中说“如果您或提供商需要在迁移过程中检查模型以获取其他信息,那就是存在的。”具体问题:
答案 0 :(得分:5)
具体答案:
是否需要保持两个模型快照同步才能正确执行迁移?
不,迁移中的快照是提供者编写者的最后手段。例如,SQLite无法重命名列,因此可以使用迁移的模型快照为此操作执行table rebuild。 99%的时间,它都不会被使用。
修改3个单独的文件是编辑迁移的唯一方法吗?
大多数情况下,您应该只编辑主迁移文件。在极少数情况下,如果您在团队环境中工作并遇到合并冲突,则可能需要编辑模型快照。您可以忽略设计器文件;它只是捕获了一些有关迁移的元数据。
如果正确配置模型,则可能无需编辑任何内容。例如,要使用标识而不是序列,请覆盖let range = SKRange(lowerLimit:50, upperLimit:100)
let constraint = SKConstraint.distance(range, to: cat)
mouse.constraints = [constraint]
并添加DbContext.OnModelCreating()
。
是否有一些EF命令只会重新生成模型快照,而不会重新生成迁移方法?
不,它不应该被需要,因为你几乎从不编辑这些文件。