Entity Framework を使用して挿入されたエンティティの ID を取得するにはどうすればよいですか? 質問する

Entity Framework を使用して挿入されたエンティティの ID を取得するにはどうすればよいですか? 質問する

ASP.NET の Entity Framework に問題があります。データベースにオブジェクトを追加するたびに Id 値を取得したいのですが、どうすればいいでしょうか?

によるとエンティティフレームワーク解決策は次のとおりです。

using (var context = new EntityContext())
{
    var customer = new Customer()
    {
        Name = "John"
    };

    context.Customers.Add(customer);
    context.SaveChanges();
        
    int id = customer.CustomerID;
}

これはデータベース テーブルの ID を取得するのではなく、エンティティに割り当てられた ID を取得します。テーブルからレコードを削除すると、シード ID はエンティティ ID と一致しなくなります。

ベストアンサー1

とても簡単です。DB で生成された ID (MS SQL など) を使用している場合は、関連するにIDENTITYエンティティを追加するだけで、自動的に入力されます。ObjectSetSaveChangesObjectContextId

using (var context = new MyContext())
{
  context.MyEntities.Add(myNewObject);
  context.SaveChanges();

  int id = myNewObject.Id; // Yes it's here
}

エンティティ フレームワークは、自動生成された が使用される場合、デフォルトで各INSERTに従います。SELECT SCOPE_IDENTITY()Id

おすすめ記事