2015-04-16 13 views
5

Ho TabellaCome aggiornare la chiave primaria da Entity Framework?

eventid int -- not PK key but with autoincrement 
jobid -- PK autoincrement disabled 
userid int -- PK autoincrement disabled 

Per aggiornare JobID Io seguente:

var itemforupdate = context.table.where(n=>n.eventid == someparameter).FirstorDefault() 

ho la voce dal database in modo corretto, ma quando si assegna:

itemforupdate.jobID = 5; 
context.SaveChanges(); 

dopo context.SaveChanges() ho la errore:

The property 'jobID' is part of the object's key information and cannot be modified

Come aggiornare jobID da Entity Framework per risolvere questo problema?

+0

Non sono esperto di framework di entità ma non è possibile impostare la chiave dell'oggetto come eventid (poiché è comunque una colonna di incremento automatico)? –

+0

Ho appena ricevuto l'elemento dal database usando eventid che è univoco e cerco di aggiornare jobid da EF ma restituisce l'errore – R01

+1

Duplicato di: http://stackoverflow.com/questions/1367751/update-primary-key-value-using-entity -struttura – Ulric

risposta

12

L'aggiornamento delle colonne chiave primaria non è una buona pratica con EntityFramework. Confonde EF perché cambia l'identità dell'oggetto e rende molto problematici mantenere sincronizzati la copia in-memory e la copia in-database dei dati. Quindi non è permesso.

Semplicemente non aggiornare le chiavi primarie. Invece cancella una riga e inseriscila una nuova.

In alternativa è possibile aggiornare la chiave primaria direttamente con una stored procedure o un'altra query.

Problemi correlati