使用分离的副本更新具有相关对象的实体框架

时间:2013-07-04 12:19:16

标签: entity-framework entity-framework-4 entity-framework-4.1

我不确定我是否正确解释这一点,因为我不知道正确的用语。我也不确定我是否使用EF 4.0或4.1。

我有一个从我的数据库生成的实体模型。我的数据库在SurveyAnswer之间存在一对多的关系。我的数据层从模型中获取Survey对象(带有Answers子集合),并通过Web服务将其发送到前端,在前端更新(调查数据和相关答案可能会更新)。我收集这个被称为实体模型的'分离'对象?
无论如何,在编辑之后,它被发送回数据层以保存,这就是问题所在。我厌倦了做以下3个选项,基于SO的其他问题的答案:

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?我是否必须手动循环搜索并保存每个答案?在这种情况下,原子性怎么样?

0 个答案:

没有答案