从这个 MSDN 文档中解释...
当在 ObjectContext 上调用 SaveChanges 时,实体框架会生成一条 INSERT 语句并在数据源上执行。
如果 INSERT 操作成功,服务器生成的值将被写回到 ObjectStateEntry。当在 SaveChanges 执行结束时自动调用 AcceptChanges 时,将使用新的服务器生成的值计算永久 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
在我的 Entity 数据模型中标记为 EntityKey。有没有人有任何想法或建议?