Я обновляю свой дистрибутив 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 строки обратно в большой двоичный объект, которым он был. Есть ли кто-нибудь, кто может мне показать?
Я понятия не имею, как часто разрешается миграция вверх, а не вниз.