Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get Auto Identity Key after Insert via EF

Is there a straight forward way of retrieving a DB auto generated primary key when adding a record via Entity Framework 4.1?

For example:

dbcontext.Entity_Tables.Add(new Entity_Table { item1 = val1, item2 = val2 }); dbcontext.SaveChanges(); newPK = ???; 

The SQL equivalent would be:

newPK = executeOnDB("INSERT INTO Entity_Table (item1, item2) VALUES (val1, val2);SELECT @@Indentity";); 

BTW I'm using MySQL but the SQL would be the same as on MSSQL

like image 826
chrisg229 Avatar asked Dec 08 '11 18:12

chrisg229


People also ask

How do I get an ID after inserting EF core?

EF execute each INSERT command followed by SELECT scope_identity() statement. SCOPE_IDENTITY returns the last identity value inserted into an identity column in the same scope. The above example will execute the following SQL in the database. WHERE @@ROWCOUNT = 1 AND [StudentID] = scope_identity();

How do I use Savechangesasync?

First you create an instance of MyEDM , add the list myList to the table MyTable , then call SaveChanges() to persist the changes to the database. It works how you want, the records get committed, but your program cannot do anything else until the commit finishes.


1 Answers

I believe EF should update your entity object with the identity:

var entity = new Entity_Table { item1 = val1, item2 = val2 }; dbcontext.Entity_Tables.Add(entity); dbcontext.SaveChanges(); int newPK = entity.ID; 
like image 92
Omer Bokhari Avatar answered Sep 21 '22 19:09

Omer Bokhari