通过EF插入后获取自动身份密钥

chr*_*229 46 entity-framework entity-framework-4.1 dbcontext

在通过Entity Framework 4.1添加记录时,是否有直接的方法来检索数据库自动生成的主键?

例如:

dbcontext.Entity_Tables.Add(new Entity_Table { item1 = val1, item2 = val2 });
dbcontext.SaveChanges();
newPK = ???;
Run Code Online (Sandbox Code Playgroud)

SQL等价物将是:

newPK = executeOnDB("INSERT INTO Entity_Table (item1, item2) VALUES (val1, val2);SELECT @@Indentity";);
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我使用的是MySQL,但SQL与MSSQL上的相同

Ome*_*ari 93

我相信EF应该用身份更新你的实体对象:

var entity = new Entity_Table { item1 = val1, item2 = val2 };
dbcontext.Entity_Tables.Add(entity);
dbcontext.SaveChanges();
int newPK = entity.ID;
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚确认这正是它的作用.非常感谢ob! (4认同)
  • 当我插入时,表上有一个InsertBefore触发器,它添加了自己的属性,因此,即使正在执行保存更改,插入也会被插入替换,因此,为我返回的ID为0,并且ID的实际值是别的.在那种情况下,我如何获得价值? (3认同)
  • 通过EF插入之前如何获取自动身份密钥? (2认同)