使用defaultValue时,如何在Entity框架中获取插入实体的Id?

有没有办法使用defaultValue发送属性但是用数据库计算结果更新它? 数据库中有一个触发器,对于输入-1,触发一个计算新值的过程。 如何获得价值?

 var x = new Stuff(); db.Stuff.AddObject(x); db.SaveChanges(); return x.ID //gives -1, but the computed value should be different. 

您需要在savechanges之后重新加载实体。因为它已被EF无法跟踪的数据库触发器更改。 所以我们需要从DB重新加载实体,

 var x = new Stuff(); db.Stuff.AddObject(x); db.SaveChanges(); db.Entry(x).GetDatabaseValues(); return x.ID; 

我有同样的问题,我的密钥在调用SaveChanges后不会更新,它只会为context.Entry(newObj).GetDatabaseValues()返回null。

在我的例子中,在EntityFramework模型StoreGeneratedPattern设置为Identity (在键上)会导致密钥在调用SaveChanges后更新。

  using (var context = new MyContext()) { context.MyEntities.AddObject(newObject); context.SaveChanges(); int id = newObject.Id; // Will give u the autoincremented ID }