このMSDNドキュメントからの言い換え...
INSERTステートメントはEntityFrameworkによって生成され、ObjectContextでSaveChangesが呼び出されたときにデータソースで実行されます。
INSERT操作が成功すると、サーバーで生成された値がObjectStateEntryに書き戻されます。SaveChangesの実行の最後にAcceptChangesが自動的に呼び出されると、サーバーで生成された新しい値を使用して永続的なEntityKeyが計算されます。
これは私のコードでは発生していないようです。を呼び出すとObjectContext.SaveChanges()
、次の値UpdateException
がスローされます。InnerException.Message
「重複するキー値が一意性制約student_term_data_pkeyに違反しています」
問題のあるコードは次のとおりです。
using (DataAccessLayerEntities context = new DataAccessLayerEntities()) {
StudentTermData mostCurrent = new StudentTermData() {
// Foreign keys:
StudentId = studentId,
TermId = currentTerm.Id,
// Non-nullable properties:
SponsorCode = string.Empty,
AdmissionNumber = string.Empty,
Expiration = string.Empty
};
context.StudentTermDatas.AddObject(mostCurrent);
context.SaveChanges(); // UpdateException occurs here.
}
StudentTermData.Id
エンティティデータモデルでEntityKeyとしてマークされていることを確認しました。誰かアイデアや提案はありますか?