使用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 }