【发布时间】:2011-06-24 09:57:33
【问题描述】:
我正在使用实体框架向我的 sql 数据库中插入一行。如果我要使用存储过程,那么我将能够返回我插入的记录的主键。
我能否返回使用实体框架插入的最后一条记录的 PK?
【问题讨论】:
标签: c# .net entity-framework
我正在使用实体框架向我的 sql 数据库中插入一行。如果我要使用存储过程,那么我将能够返回我插入的记录的主键。
我能否返回使用实体框架插入的最后一条记录的 PK?
【问题讨论】:
标签: c# .net entity-framework
插入实体后,它应该已更新,以便映射到数据库中主键的属性具有新的 PK 值。
【讨论】:
是的,你当然可以这样做。见例子:
int id = 0;
using (PC2Entities objectContext = new PC2Entities())
{
objectContext.ClientContacts.AddObject(clientContact);
objectContext.SaveChanges();
id = clientContact.Id;
transaction.Complete();
}
id是PK。
【讨论】:
对于 Oracle.ManagedDataAccess.EntityFramework(版本 6.121 或更早版本)
如果插入后仍然没有得到ID,则在主键属性上添加该属性。
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string ID { get; set; }
我不得不这样做,不知道为什么,可能是因为我使用的是 oracle 而实体框架对此不满意。
编辑:我看到这个答案被否决了,我知道为什么,因为最新版本的 ODAP 不需要您输入 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]。但对于旧版本来说确实如此。
【讨论】: