1

我正在学习迁移,我很好奇迁移工具如何确定在创建最后一次迁移后对我们的模型进行了哪些更改。

例如,假设我们创建了一个迁移M1并通过发出命令应用它Update-Database。应用后M1,如果我们P向一个类添加一个新属性并通过发出命令C创建另一个迁移M2Add-Migration M2,那么迁移工具将能够以某种方式找出我们对模型所做的唯一更改(在创建M1之后)是添加一个新属性。P上课C。迁移工具如何解决这个问题?

谢谢你

回复:

Migrations 使用__Migrations表来确定哪些迁移已经应用以及哪些尚未应用,但我认为它不会使用该表来确定从一个迁移到另一个迁移的变化,因为迁移表中的数据是一个哈希,这意味着它不能被解密,我认为这是必要的,以便可以将当前模型元数据与存储在迁移表中的最新元数据进行比较?!

或者您是否暗示它能够仅通过比较(当前和存储版本的)哈希值来确定哪些属性已更改或被删除或添加到实体?

4

2 回答 2

1

它将您的模型版本存储在数据库(迁移历史表)中,并将您当前的模型与存储在数据库中的模型进行比较。

于 2012-11-28T01:34:13.430 回答
0

该模型存储在 .resx 文件中,位于 Target 资源值中的每个 mifration 下。它是一个编码(序列化)模型。它用于比较您当前的模型并生成下一次迁移。

于 2014-11-10T08:45:08.480 回答