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

Jan*_*sek 10 c# entity entity-framework

有没有办法用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.
Run Code Online (Sandbox Code Playgroud)

Jay*_*ena 17

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

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

return x.ID;
Run Code Online (Sandbox Code Playgroud)


Dev*_*per -3

   using (var context = new MyContext())
   {
       context.MyEntities.AddObject(newObject);
       context.SaveChanges();

       int id  = newObject.Id; // Will give u the autoincremented ID
   }
Run Code Online (Sandbox Code Playgroud)