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?