1

我有一个我认为很简单的情况——但我已经坚持了一段时间了。

我只是查询数据库,并将结果放入视图模型中:CallVM- 这部分工作正常。

然后我想要做的是,它循环遍历QueueByTeam对象,并更新其中一个属性 - 但是,“循环”部分不会保存对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它的外观来看,它正在重新查询数据库,因此会丢失您的更改。

作为旁注,如果更改只是将所有者设置为"-----"您可以将其直接放入原始 select 语句中,而不是使用单独的 for 循环。

于 2013-05-30T07:34:30.080 回答