1

私は単純な状況だと思いますが、しばらくそれで行き詰まっています。

私は単純にデータベースにクエリを実行し、結果をビューモデルに入れています: CallVM- その部分は正常に動作します。

次にやりたいことは、QueueByTeamオブジェクトをループし、プロパティの 1 つを更新することです。ただし、「ループ」部分ではオブジェクトへの変更が保存されないため、QueueByTeamオブジェクトをビューに返すと、更新が行われます。無視されました:

  var QueueByTeam = db.Calls.Where(x => x.assignedteam == id)
         .Select(call => new CallVM
          {
              customer = call.customer,
              nexttargetdate = call.nexttargetdate
              owner = "";
          });


        foreach (var calls in QueueByTeam)
        {
            calls.owner = "--------";
        }
        // at this point, QueueByTeam has ignored changing the `owner` field to "-------"           
        return View(QueueByTeam.ToList());

ビューに戻る前に、foreach ループの後で変更を保存するために何かをする必要がありますか?

ありがとう、マーク

4

1 に答える 1

2

コードを次のように変更します。

 var QueueByTeam = db.Calls.Where(x => x.assignedteam == id)
     .Select(call => new CallVM
      {
          customer = call.customer,
          nexttargetdate = call.nexttargetdate
          owner = "";
      })
      .ToList();


    foreach (var calls in QueueByTeam)
    {
        calls.owner = "--------";
    }
    // at this point, QueueByTeam has ignored changing the `owner` field to "-------"           
    return View(QueueByTeam);

ToList()つまり、データを変更しようとする前に、, の後にストレートを置きSelectます。これにより、データベース クエリがすぐに実行され、結果がリストに格納されます。

クエリを実行するたびにQueuesByTeam、データベースを再クエリしていたため、変更が失われていました。

補足として、変更が所有者をに設定するだけの場合は、"-----"別の for ループを使用する代わりに、それを元の select ステートメントに直接入れることができます。

于 2013-05-30T07:34:30.080 に答える