.NET Entity Framework: impossibile eseguire SaveChanges su tabella

In alcuni casi, quando si mappano alcune tabelle su Entity Framework 6 può accadere che non sia permesso aggiungere o rimuovere record, con una eccezione generata all’istruzione SaveChanges. Quando vengono mappate le tabelle (ad. es. da SQL Server), soltanto le colonne non nullabili specificate come identità vengono inserite come chiavi primarie. Soltanto le tabelle per le quali è specificata una chiave primaria sono aggiornabili, in caso contrario la tabella viene considerata come una vista, è possibile leggerla ma non è possibile modificarla.

Anche dopo aver provato ad aggiornare il modello, rimuovere e reinserire la tabella dal modello, non cambia nulla. Per correggere l’errore è possibile seguire tre strade:

  1. aggiungere nella DefiningQuery l’istruzione per Insert, Update e Delete
  2. Modificare manualmente il codice XML del file EDMX . In qualche caso nella voce <Key> della tabella vengono riportati tutti i campi. E’ sufficiente lasciare soltanto il campo chiave primaria. Infine nella definizione dell’EntitySet, viene riportata la DefiningQuery (come se fosse una vista). E’ sufficiente rimuovere la DefiningQuery e chiudere il tag EntitySet lasciando invariati gli altri attributi.
  3. Ricreare la tabella sul database verificando che venga creata una chiave primaria. Nel caso di SQL Server, la dicitura che viene riportata in fondo all’istruzione CREATE TABLE è “CONSTRAINT [PK_NomeTabella] PRIMARY KEY CLUSTERED”

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Time limit is exhausted. Please reload CAPTCHA.