12

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.
4

6 に答える 6

18

savechangesの後にエンティティをリロードする必要があります。これは、EFで追跡できないデータベーストリガーによってエンティティが変更されたためです。したがって、DBからエンティティを再度リロードする必要があります。

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

return x.ID;
于 2012-09-05T11:21:32.180 に答える
3

EF コアを使用している場合は、次のようになります。

 public int CreateMyEntity(MyEntityType myEntity)
 {
      Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry<MyEntityType> created = _context.MyEntityType.Add(myEntity);
      _context.SaveChanges()
      return created.Entity.Id;
  }
于 2020-03-17T07:54:09.963 に答える
-3
   using (var context = new MyContext())
   {
       context.MyEntities.AddObject(newObject);
       context.SaveChanges();

       int id  = newObject.Id; // Will give u the autoincremented ID
   }
于 2012-09-05T11:17:05.287 に答える