Matt Seymour
Matt Seymour

Reputation: 9415

Entity Framework 4 getting primary key ID for inserted record

I am using the Entity Framework for inserting a row into my sql database. If I was to be using a stored procedure then I would be able to return the primary key for the record which I had inserted.

Am I able to do return the PK for the last my last record inserted using the Entity Framework?

Upvotes: 36

Views: 39328

Answers (3)

saquib adil
saquib adil

Reputation: 156

For Oracle.ManagedDataAccess.EntityFramework (version 6.121 or older)

If you still do not get the ID after inserting, then add this attribute on the primary key property.

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 public string ID { get; set; }

I had to do this, don't know why, may be because I am using oracle and entity framework is not happy about that.

Edit: I see this answer is down voted, and I know why, because the latest version of ODAP doesn't require you to put the [DatabaseGenerated(DatabaseGeneratedOption.Identity)]. But this was true for the older versions.

Upvotes: -1

asma
asma

Reputation: 2845

Yes of course you can do this. See example:

int id = 0;

using (PC2Entities objectContext = new PC2Entities())
{
   objectContext.ClientContacts.AddObject(clientContact);
   objectContext.SaveChanges();
   id = clientContact.Id;

   transaction.Complete();
}

id is the PK.

Upvotes: 28

Coding Flow
Coding Flow

Reputation: 21881

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

Upvotes: 41

Related Questions