Paraphrasing from this MSDN documentation ...
An INSERT statement is generated by
the Entity Framework and executed on
the data source when SaveChanges is
called on the ObjectContext.
If the INSERT operation succeeds,
server-generated values are written
back to the ObjectStateEntry. When
AcceptChanges is called automatically
at the end of the SaveChanges
execution, a permanent EntityKey is
computed by using the new
server-generated values.
This does not seem to be occurring in my code. When I call ObjectContext.SaveChanges()
, an UpdateException
is thrown with InnerException.Message
value:
"duplicate key value violates unique constraint student_term_data_pkey"
Here is the offending code:
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.
}
I have verified that StudentTermData.Id
is marked as an EntityKey in my Entity data model. Does anyone have any ideas or suggestions?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…