5

Sto aggiornando il nostro progetto core dotnet per utilizzare PostgreSQL sul back-end anziché Microsoft SQL Server e colpire una situazione con due tabelle che utilizzano un GUID come tipo di dati.Come configurare Entity Framework per consentire a uuid di generazione di database per PostgreSQL (npgsql)?

ERRORE

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. 

Dopo un po 'googling Mi resi conto allora che devo abilitare l'estensione uuid (non so se questo può essere automatizzato in qualche modo) e quindi ha generato un UUID in pgAdmin successo.

CREATE EXTENSION "uuid-ossp"; 
SELECT uuid_generate_v4(); 

Sfortunatamente il mio progetto dotnet si lamenta ancora dello stesso errore. Vedo nell'errore che dice a aggiungere .HasPostgresExtension ("uuid-ossp") a OnModelCreating e ho provato in diversi punti ma non riesco a capire dove specificamente dovrebbe essere aggiunto.

+0

HasPostgresExtension() deve essere collocato in OnModelCreating del contesto, come dice l'errore. In caso contrario, pubblica le parti pertinenti del tuo contesto. Nota che devi utilizzare almeno la versione 1.0.0-rc3-ci-39 dal feed instabile di Npgsql affinché funzioni. –

risposta

6

Come da istruzioni di Shay - Dopo l'aggiornamento all'ultima versione di Npgsql, l'errore dell'estensione uuid non è più disponibile. Ecco un frammento di ciò che l'OnModelCreating appare come per gli altri provare questo fuori:

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

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