ObjectContext.SaveChanges () viola a chave primária, lança UpdateException?

Parafraseando deesta documentação do MSDN ...

Uma instrução INSERT é gerada pelo Entity Framework e executada na fonte de dados quando SaveChanges é chamado no ObjectContext.

Se a operação INSERT for bem-sucedida, os valores gerados pelo servidor serão gravados de volta no ObjectStateEntry. Quando AcceptChanges é chamado automaticamente no final da execução de SaveChanges, uma EntityKey permanente é calculada usando os novos valores gerados pelo servidor.

Isso não parece estar ocorrendo no meu código. Quando eu ligoObjectContext.SaveChanges(), aUpdateException é jogado comInnerException.Message valor:

"o valor duplicado da chave viola a restrição exclusiva student_term_data_pkey"

Aqui está o código incorreto:

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

Eu verifiquei queStudentTermData.Id está marcado como uma EntityKey no meu modelo de dados da entidade. Alguém tem ideias ou sugestões?

questionAnswers(2)

yourAnswerToTheQuestion