0

私は正しい用語を知らないので、これを正しく説明しているのかさえわかりません。また、EF 4.0 と 4.1 のどちらを使用しているかもわかりません。

DB から生成されたエンティティ モデルがあります。私のDBには、 と の間に1対多の関係がSurveyあり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上記の 3 回目の試行では、最終的に例外はスローされませんでしたが、更新された回答は保存されませんでした (この場合は変更しなかったため、の他のプロパティについてはわかりません)。

要するに、これSurveyと添付されているすべてAnswerの s を保存するにはどうすればよいでしょうか。回答を手動でループして、それぞれを保存する必要がありますか? この場合の原子性はどうですか?

4

0 に答える 0