ObjectContext.SaveChanges () нарушает первичный ключ, выбрасывает UpdateException?
Перефразируя изэта документация MSDN ...
Инструкция INSERT генерируется Entity Framework и выполняется в источнике данных, когда SaveChanges вызывается для ObjectContext.
Если операция INSERT выполнена успешно, сгенерированные сервером значения записываются обратно в ObjectStateEntry. Когда AcceptChanges вызывается автоматически в конце выполнения SaveChanges, постоянный 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 в моей модели данных Entity. У кого-нибудь есть идеи или предложения?