我的情况非常简单。我有3
个对象:
TrainingConsultant
的对象尚未保存到数据库Training
的对象,EntityState
为Detatched
。 EntityState
为Detatched
。 我需要使用引用的TrainingConsultant
和Consultant
保存Training
对象,以便在数据库中正确填写所有必需的字段和外键。
问题是,在我调用context.TrainingConsultants.AddObject(trainingConsultant);
之前,所有内容都处于分离状态。之后,培训和顾问都将其EntityState更改为“已添加”,以便context.SaveChanges()
尝试在添加training
之前将consultant
和traingingConsultant
添加到数据库。它失败是因为Consultant
已存在于数据库中,`consultant。
我如何解决此问题,以便顾问和培训都不会得到保存但仍会被引用?请记住,我在代码中的其他位置分配了这两个引用的对象:
trainingConsultant.Training = training;
trainingConsultant.Consultant = consultant;
因此,在保存任何更改时,我需要临时保存对象,然后在null
对象中将.Training
设置为.Consultant
TrainingConsultant
?
using (var context = new Entity(Settings.sqlDataConnectionDetails)) {
context.TrainingConsultants.AddObject(trainingConsultant);
context.SaveChanges();
}
答案 0 :(得分:1)
您应该只按ID指定而不是附加实体:
trainingConsultant.TrainingId = training.Id;
trainingConsultant.ConsultantId = consultant.Id;
context.TrainingConsultants.AddObject(trainingConsultant);
context.SaveChanges();
您可以根据需要进行调整,以匹配您的字段/列名称。