Мне нужен совет.
Я перенес базу данных с SQL Server на Aurora PostgreSQL с помощью AWS DMS. В большинстве таблиц в SQL Server первичными ключами являются uniqueidentifier
(GUID). При миграции на Postgres эти столбцы преобразуются в VARCHAR(36)
. Согласно документации AWS DMS, это похоже на ожидаемое.
В нашем .NET-приложении мы используем Entity Framework 6, в который я добавил новый dbContext для использования поставщика npgsql. Обратите внимание, что мы все еще сохраняем существующие поставщики EF6 для SQL Server. По сути, приложение будет использовать как SQL Server, так и PostgreSQL. Это все нормально подключено.
Когда я сталкиваюсь с некоторыми проблемами, когда мой контекст Postgres выполняет выборку в базе данных PostgreSQL, он обнаруживает множество ошибок.
Npgsql.PostgresException: 42883: оператор не существует: переменный символ = uuid
Я понимаю проблему, когда приложение, использующее EF, выполняет выборку по идентификатору (GUID), а таблица Postgres имеет идентификатор типа VARCHAR
...
Я считаю, что проблема не в приложении или EF, скорее, столбец в таблице должен быть чем-то вроде UUID. Что я могу сделать после миграции, я могу просто изменить столбец, чтобы он стал типом UUID, но так ли это и решит ли это мои проблемы? Я также чувствую, что это не может быть уникальным случаем, с которым я имею дело; кажется распространенной проблемой для всех, кто также переносит приложение .NET с SQL Server на PostgreSQL ...
Я с нетерпением жду ваших идей, комментариев, мыслей по этому поводу. Заранее спасибо.
uniqueidentifier
преобразовался вvarchar
. Вы пробовалиALTER TABLE [table_with_guid] ALTER [guid_field] SET TYPE uuid NOT NULL
? - person Alex Yu   schedule 09.02.2021