如何在使用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?