2011-12-08 10 views
35

Entity Framework 4.1経由でレコードを追加するときに、DB自動生成プライマリキーを取得する簡単な方法はありますか?例えばEF経由で挿入した後で自動識別キーを取得

dbcontext.Entity_Tables.Add(new Entity_Table { item1 = val1, item2 = val2 }); 
dbcontext.SaveChanges(); 
newPK = ???; 

SQL同等物は次のようになります。

newPK = executeOnDB("INSERT INTO Entity_Table (item1, item2) VALUES (val1, val2);SELECT @@Indentity";); 

ところで、私はEFを信じて、私は、MySQLを使用していますが、SQLは、MSSQL

+5

最後に挿入されたIDを取得するには、SELECT @@ Identityが良い方法ではないことを指摘したいだけです。 'SCOPE_IDENTITY()' – Icarus

+0

ありがとうイカルスを使うべきです。私はそれを実現しませんでした。あまりにも古いアプリのアップデートが必要だと思います! – chrisg229

+0

[Entityフレームワークに挿入されたエンティティのIDを取得するにはどうすればいいですか?](http://stackoverflow.com/questions/5212751/how-can-i-get-id-of-inserted-entity-in-entity –

答えて

73

上と同じになりますエンティティオブジェクトをIDで更新する必要があります。

var entity = new Entity_Table { item1 = val1, item2 = val2 }; 
dbcontext.Entity_Tables.Add(entity); 
dbcontext.SaveChanges(); 
int newPK = entity.ID; 
+3

私はちょうどそれがまさにそれが何であるかを確認しました。多くのありがとう! – chrisg229

+2

私が挿入すると、独自のプロパティを追加するInsertBeforeトリガがテーブルにあります。したがって、保存変更が実行されていても、その挿入は前に挿入されているため、返されたIDは0です。 IDの実際の値は別のものです。その場合、どのように値を取得するのですか? – Mahesh

関連する問題