0

我不确定我是否正确解释了这一点,因为我不知道正确的术语。我也不确定我使用的是 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?我是否必须手动遍历答案并保存每个答案?在这种情况下,原子性如何?

4

0 回答 0