Я обновляю наш проект ядра dotnet, чтобы использовать PostgreSQL на бэкэнд вместо Microsoft SQL Server и попал в ситуацию с двумя таблицами, использующими GUID в качестве типа данных.Как настроить Entity Framework, чтобы разрешить создание базы данных uuid для PostgreSQL (npgsql)?
ОШИБКА
Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: Property CommentID on type is a database-generated uuid, which requires the PostgreSQL uuid-ossp extension. Add .HasPostgresExtension("uuid-ossp") to your context's OnModelCreating.
После небольшого Googling я тогда понял, что я должен включить UUID расширение (не уверен, что это может быть автоматизирован каким-то образом), а затем произвел UUID в pgAdmin успешно.
CREATE EXTENSION "uuid-ossp";
SELECT uuid_generate_v4();
К сожалению, мой проект dotnet по-прежнему жалуется на ту же ошибку. Я вижу, что в ошибке он говорит, что добавляет .HasPostgresExtension («uuid-ossp») в OnModelCreating, и я пробовал в нескольких местах, но не могу понять, где именно он должен быть добавлен.
HasPostgresExtension() должен быть помещен в вашем контексте в OnModelCreating, как говорит об ошибке. Если это не понравится, разместите соответствующие части вашего контекста. Обратите внимание, что вы должны использовать по крайней мере версию 1.0.0-rc3-ci-39 из Npgsql неустойчивого фида, чтобы это работало. –