ObjectContext.SaveChanges () verletzt den Primärschlüssel und löst eine UpdateException aus?

Paraphrasierung vondiese MSDN-Dokumentation ...

Eine INSERT-Anweisung wird vom Entity Framework generiert und in der Datenquelle ausgeführt, wenn SaveChanges im ObjectContext aufgerufen wird.

Wenn der INSERT-Vorgang erfolgreich ist, werden die vom Server generierten Werte in den ObjectStateEntry zurückgeschrieben. Wenn AcceptChanges am Ende der Ausführung von SaveChanges automatisch aufgerufen wird, wird ein permanenter EntityKey unter Verwendung der neuen vom Server generierten Werte berechnet.

Dies scheint in meinem Code nicht vorzukommen. Wenn ich @ anruObjectContext.SaveChanges(), einUpdateException wird mit @ geworfInnerException.Message Wert

"doppelter Schlüsselwert verletzt eindeutige Einschränkung student_term_data_pkey"

Hier ist der Code, der den Fehler verursacht:

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

Ich habe bestätigt, dassStudentTermData.Id ist in meinem Entity-Datenmodell als EntityKey markiert. Hat jemand irgendwelche Ideen oder Vorschläge?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage