Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to update primary key from Entity Framework?

I have Table

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

To update jobID I do following:

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

I get the item from database correctly, but when assigning:

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

after context.SaveChanges() I get the error:

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

How to update jobID from Entity Framework to solve this problem?

like image 551
R01 Avatar asked Apr 16 '15 12:04

R01


People also ask

Can you update a primary key in Entity Framework?

You cannot update the primary key through entity framework, since entity framework would not know which database row to update.

Is it possible to update primary key value?

Short answer: yes you can.


1 Answers

Updating primary key columns is not a good practice with EntityFramework. It confuses EF because it changes the identity of the object, and makes keeping the in-memory copy and the in-database copy of the data in sync very problematic. So it's not allowed.

Just don't update primary keys. Instead delete one row and insert a new one.

Alternatively you can update the primary key directly with a stored procedure or other query.

like image 122
sarin Avatar answered Sep 20 '22 15:09

sarin