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

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

<Property Name="ID" Type="int" Nullable="false" StoreGeneratedPattern="None" 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
   }
链接地址: http://www.djcxy.com/p/33551.html

上一篇: How can I get Id of inserted entity in Entity framework when using defaultValue?

下一篇: Undo changes in entity framework entities