我不确定我是否正确解释了这一点,因为我不知道正确的术语。我也不确定我使用的是 EF 4.0 还是 4.1。
我有一个从我的数据库生成的实体模型。Survey
我的数据库在 a和a 之间具有一对多的关系Answer
。我的数据层Survey
从模型中获取一个对象(带有Answers
子集合),然后通过 Web 服务将其发送到前端,并在前端进行更新(调查数据和相关答案都可能得到更新)。我认为这被称为实体模型中的“分离”对象?
不管怎样,编辑完后,它会被送回数据层保存,这就是问题所在。根据 SO 的其他问题的答案,我厌倦了以下 3 个选项:
public bool updateSurvey(Survey surv)
{
Survey target = entity.Surveys.FirstOrDefault(p => p.id == surv.id);
if (target == null)
return false;
//first try - exception at commented line
target.ownerID = surv.ownerID;
target.question = surv.question;
target.title = surv.title;
//target.Answers = surv.Answers;
//second try - replace commented line above with this - different exception
target.Answers.Clear();
foreach (var item in surv.Answers)
{
target.Answers.Add(item);
}
//third try - replace whole above block with this line
entity.Surveys.ApplyCurrentValues(surv);
try
{
entity.SaveChanges();lse;
}
catch (Exception)
{
return false;
}
return true;
}
我上面的第三次尝试终于没有抛出异常,但是更新的答案没有保存(我不知道 的其他属性surv
,因为在这种情况下我没有更改它们)。
所以,底线 - 我如何保存这个Survey
和所有附加Answer
的 s?我是否必须手动遍历答案并保存每个答案?在这种情况下,原子性如何?