我不确定我是否正确解释这一点,因为我不知道正确的用语。我也不确定我是否使用EF 4.0或4.1。
我有一个从我的数据库生成的实体模型。我的数据库在Survey
和Answer
之间存在一对多的关系。我的数据层从模型中获取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
?我是否必须手动循环搜索并保存每个答案?在这种情况下,原子性怎么样?