我正在学习迁移,我很好奇迁移工具如何确定在创建上一次迁移后对我们的模型进行了哪些更改。
例如,假设我们创建了一个迁移 M1 并通过发出命令Update-Database
来应用它。应用M1
后,如果我们向类P
添加新属性C
并通过发出命令Add-Migration M2
创建另一个迁移 M2 ,那么迁移工具将以某种方式能够确定我们对模型进行的更改(在创建 M1 之后)正在向类P
添加新属性C
。迁移工具如何解决这个问题?
谢谢
回复:
迁移使用 __迁移表来确定哪些迁移已经应用以及哪些迁移尚未应用,但我认为它不会使用此表来确定从一个迁移到另外,因为迁移表中的数据是哈希,这意味着它无法解密,我认为这是必要的,以便可以将当前模型元数据与存储在迁移表中的最新元数据进行比较? !
或者您是否暗示只能通过比较(当前版本和存储版本)的哈希值(哪些属性已更改或已删除或已添加到实体)来确定?
答案 0 :(得分:1)
它将您的模型版本存储在数据库中(迁移历史记录表),并将您当前的模型与存储在数据库中的模型进行比较。
答案 1 :(得分:0)
模型存储在Target资源值中每个mifration下的.resx文件中。它是一种编码(序列化)模型。它用于比较您当前的模型并生成下一次迁移。