venerdì 18 settembre 2026

Error 19 "UNIQUE constraint failed" con SQLite ed Entity Framework Core C#

Quando si sviluppano applicazioni utilizzando il database SQLite, Entity Framework Core e il linguaggio C#, durante l'inserimento dei dati può verificarsi un errore di questo tipo:

Error 19: 'UNIQUE constraint failed: NomeTabella.Campo'.

Questo errore indica che si sta tentando di inserire un valore già presente in una colonna sulla quale è stato definito un vincolo UNIQUE oppure che viene utilizzata come chiave primaria.

Nel caso in cui il campo sia una chiave primaria numerica che deve essere generata automaticamente da SQLite, è opportuno verificare innanzitutto che la relativa colonna sia stata definita correttamente, ad esempio:

NomeCampo INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL

È inoltre importante verificare la configurazione del modello nel DbContext, all'interno del metodo OnModelCreating, affinché Entity Framework Core sappia che il valore della chiave viene generato al momento dell'inserimento.

Ad esempio:
C#
modelBuilder.Entity<NomeTabella>(entity =>
{
    entity.HasKey(e => e.IdCampoChiaveContatore);

    entity.Property(e => e.IdCampoChiaveContatore).ValueGeneratedOnAdd();
entity.Property(e => e.CampoDate).HasColumnType("DATETIME"); });

 

In questo modo, IdCampoChiaveContatore viene configurato come chiave il cui valore viene generato durante l'inserimento del record.

Se, nonostante questa configurazione, compare l'errore UNIQUE constraint failed, è opportuno verificare anche il valore che l'applicazione sta effettivamente tentando di inserire: se viene assegnato manualmente un valore già esistente alla chiave primaria, SQLite segnalerà comunque una violazione del vincolo UNIQUE.

 

Nessun commento: