5

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

+0

HasPostgresExtension() должен быть помещен в вашем контексте в OnModelCreating, как говорит об ошибке. Если это не понравится, разместите соответствующие части вашего контекста. Обратите внимание, что вы должны использовать по крайней мере версию 1.0.0-rc3-ci-39 из Npgsql неустойчивого фида, чтобы это работало. –

ответ

6

Согласно инструкции Shay - после обновления до последней версии Npgsql ошибка расширения uuid теперь исчезла. Вот фрагмент того, что OnModelCreating выглядит для других пытается это:

protected override void OnModelCreating(ModelBuilder builder) 
    { 
     base.OnModelCreating(builder); 

     builder.HasPostgresExtension("uuid-ossp"); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^