实体框架4获取插入记录的主键ID

时间:2011-06-24 09:57:33

标签: c# .net entity-framework

我正在使用Entity Framework将一行插入我的sql数据库。如果我要使用存储过程,那么我将能够返回我插入的记录的主键。

我是否可以返回使用实体框架插入的最后一条记录的PK?

3 个答案:

答案 0 :(得分:40)

插入实体后,它应该已更新,以便映射到数据库中主键的属性具有新的PK值。

答案 1 :(得分:29)

是的,你当然可以这样做。见例:

int id = 0;

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

   transaction.Complete();
}

id是PK。

答案 2 :(得分:-1)

适用于Oracle.ManagedDataAccess.EntityFramework(版本6.121或更早版本)

如果插入后仍未获取ID,请在主键属性上添加此属性。

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

我不得不这样做,不知道为什么,可能是因为我使用的是oracle而实体框架并不高兴。

编辑:我看到这个答案被投票,我知道原因,因为最新版本的ODAP不要求你把[DatabaseGenerated(DatabaseGeneratedOption.Identity)]。但旧版本的确如此。