EF Core 3.1 Custom SQL Up Migration. Как мне написать даун-версию? - PullRequest
0 голосов
/ 15 января 2020

Я обновляю свой дистрибутив EF Core с 2.2.6 до 3.1. В Sqlite 3.0 есть критическое изменение, которое теперь хранит Guids в виде строк вместо BLOB-объектов. Это сломало несколько моих запросов, и мне нужно отрегулировать.

К счастью, MS был достаточно любезен, чтобы предоставить пользовательский шаг миграции, чтобы я мог превратить все свои существующие объекты Guid в строки во время миграции

UPDATE MyTable
SET GuidColumn = hex(substr(GuidColumn, 4, 1)) ||
             hex(substr(GuidColumn, 3, 1)) ||
             hex(substr(GuidColumn, 2, 1)) ||
             hex(substr(GuidColumn, 1, 1)) || '-' ||
             hex(substr(GuidColumn, 6, 1)) ||
             hex(substr(GuidColumn, 5, 1)) || '-' ||
             hex(substr(GuidColumn, 8, 1)) ||
             hex(substr(GuidColumn, 7, 1)) || '-' ||
             hex(substr(GuidColumn, 9, 2)) || '-' ||
             hex(substr(GuidColumn, 11, 6))
WHERE typeof(GuidColumn) == 'blob';

При необходимости я могу разрешить только «Вверх» конверсии и запретить "Даун". Но если возможно, я бы хотел написать обратное. Однако мои знания о SQL настолько плохи, что я не представляю, как написать «Down» эквивалент этого SQL, чтобы преобразовать столбец Guid строки обратно в большой двоичный объект, которым он был. Есть ли кто-нибудь, кто может мне показать?

Я понятия не имею, как часто разрешается миграция вверх, а не вниз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...