Я изучаю миграции, и мне любопытно, как инструмент миграции определяет, какие изменения в нашей модели были внесены после создания последней миграции.
Например, предположим, что мы создали миграцию M1 и применили ее, введя команду Update-Database
. После применения M1
, если мы добавим новое свойство P
в класс C
и создадим другую миграцию M2, введя команду Add-Migration M2
, то инструмент миграции каким-то образом сможет выяснить, что это только изменение (после M1 был создан), мы добавили в модель новое свойство P
в класс C
. Как инструмент миграции это определяет?
Спасибо
ОТВЕТ:
Миграции используют таблицу __Migrations, чтобы определить, какие миграции уже были применены, а какие еще предстоит применить, но я думал, что она не использует эту таблицу, чтобы также выяснить, что изменилось от одной миграции к другой, поскольку данные в таблице миграции представляют собой хэш, что означает, что их нельзя расшифровать, что, как я полагаю, необходимо для сравнения метаданных текущей модели с последними метаданными, хранящимися в таблице миграции?!
Или вы подразумеваете, что он может определить, просто сравнивая хеш-значения (текущей и сохраненной версий), какие свойства были изменены, удалены или добавлены к объекту?