2015-04-16 10 views
5

mam TabelaJak zaktualizować klucz podstawowy z Entity Framework?

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

Aby zaktualizować jobid Mam następujący:

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

uzyskać element z bazy danych poprawnie, ale podczas przypisywania:

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

po context.SaveChanges() otrzymuję błąd:

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

Jak zaktualizować ID zadania z Entity Framework, aby rozwiązać ten problem?

+0

Nie jestem ekspertem w dziedzinie encji, ale czy nie możesz ustawić klucza obiektu jako eventid (ponieważ jest to kolumna z automatycznym przyrostem)? –

+0

Właśnie otrzymuję element z bazy danych za pomocą identyfikatora zdarzenia, który jest unikalny i próbuje zaktualizować jobid z EF, ale daje błąd – R01

+1

Duplikat: http://stackoverflow.com/questions/1367751/update-primary-key-value-using-entity -struktura – Ulric

Odpowiedz

12

Aktualizacja kolumn klucza podstawowego nie jest dobrą praktyką w EntityFramework. To myli EF, ponieważ zmienia tożsamość obiektu i sprawia, że ​​przechowywanie kopii w pamięci i kopii danych w bazie danych w synchronizacji jest bardzo problematyczne. Więc nie jest dozwolone.

Po prostu nie aktualizuj kluczy podstawowych. Zamiast tego usuń jeden wiersz i wstaw nowy.

Alternatywnie można zaktualizować klucz podstawowy bezpośrednio za pomocą procedury składowanej lub innego zapytania.

Powiązane problemy