Reputation: 9415
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
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
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
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