Перефразируя от этой документации 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. У кого-нибудь есть идеи или предложения?