SQLデータベースに行を挿入するためにEntity Frameworkを使用しています。私がストアドプロシージャを使用する場合、私は挿入したレコードのプライマリキーを返すことができます。挿入されたレコードの主キーIDを取得するEntity Framework 4
Entity Frameworkを使用して最後に挿入した最後のレコードのPKを返すことはできますか?
SQLデータベースに行を挿入するためにEntity Frameworkを使用しています。私がストアドプロシージャを使用する場合、私は挿入したレコードのプライマリキーを返すことができます。挿入されたレコードの主キーIDを取得するEntity Framework 4
Entity Frameworkを使用して最後に挿入した最後のレコードのPKを返すことはできますか?
エンティティを挿入した後は、データベースの主キーにマップされているプロパティが新しいPK値を持つように更新されているはずです。
もちろん、これを行うことができます。例:
int id = 0;
using (PC2Entities objectContext = new PC2Entities())
{
objectContext.ClientContacts.AddObject(clientContact);
objectContext.SaveChanges();
id = clientContact.Id;
transaction.Complete();
}
id
はPKです。
まだ挿入してもIDを取得できない場合は、この属性を主キーのプロパティに追加してください。私はこれをしなければならなかった
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string ID { get; set; }
は、私はOracleとエンティティフレームワークを使用していても、その程度満足していないので、なぜ、かもしれ知りません。
Addで起こることはありますか?使用可能なIDを取得する前に、まずコンテキストへの変更を保存する必要がありますか? –
変更をデータベースにコミットする必要があります。データベースにヒットするまで、PK値は生成されず、コンテキストに追加するだけです。 –
これは、SCOPE_IDENTITYのバグのために必ずしも完全に信頼できるとは限りません。 – DFTR