Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get Record ID in Entity Framework after insert

Tags:

I'm developing an ASP.net application using Entity Framework. I'm using DetailsView to insert data into database. There is a table as Client and its primary key is client_id. client_id is auto generated by database. I need to get auto generated client_id after inserting a record into Client table and assign it to a hidden field for future use.

I searched about this and I found lot of solutions. But I don't know how to use them since I'm new to asp.net. I found that Entity Framework automatically populates business objects with the db-generated values after call SaveChanges(). My question is where should I call this in my partial class ? What is the event ?

I'm using DetailsView with EntityDataSource and binding EntityDataSource directly with Entity Model, so I'm not creating objects to insert data.

like image 227
Bishan Avatar asked Jun 06 '13 06:06

Bishan


2 Answers

Following the call to _dbContext.SaveChanges(), the entity will automatically be updated with its new identity field value.

The following code assumes your Entity Framework entity container name is MyEntities, and your database's Client table has at least the two following fields:

client_id   int identity client_name varchar(25) 

Your code might look something like this:

// Establish DbContext private readonly MyEntities _dbContext = new MyEntities();  // Create new client table entity and initialize its properties var clientEntity = new Client { client_name="MyCo" };  // Add it to the ORM's collection of Client entities _dbContext.Clients.Add(clientEntity);  // Save the new entity to the database _dbContext.SaveChanges();  // Return the identity field from the existing entity, //   which was updated when the record was saved to the database return clientEntity.client_id; 
like image 189
STLDev Avatar answered Sep 29 '22 22:09

STLDev


After you have inserted the entity it should be updated so that the property that maps to the primary key in the database has the new PK value.

Like MyObject.Id will give you the new Id

like image 37
Raab Avatar answered Sep 29 '22 22:09

Raab