我正在使用Entity Framework将一行插入我的sql数据库。如果我要使用存储过程,那么我将能够返回我插入的记录的主键。
我是否可以返回使用实体框架插入的最后一条记录的PK?
答案 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)]。但旧版本的确如此。