Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net MVC foreach循环未持久化更改_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

C# ASP.Net MVC foreach循环未持久化更改

C# ASP.Net MVC foreach循环未持久化更改,c#,asp.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我有一个我认为很简单的情况——但我已经坚持了一段时间了 我只是简单地查询数据库,并将结果放入一个viewmodel:CallVM——这部分工作正常 然后我想做的是,它循环通过QueueByTeam对象,并更新其中一个属性-但是,“循环”部分不会保存对QueueByTeam对象的更改,因此当我将对象返回到视图时,我的更新被忽略: var QueueByTeam = db.Calls.Where(x => x.assignedteam == id) .Select(cal

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

我只是简单地查询数据库,并将结果放入一个viewmodel:
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循环之后执行某些操作来保存更改

谢谢,Mark将代码更改为:

 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);
i、 e.在尝试更改数据之前,将
ToList()
直接放在
选择之后。这将强制数据库查询立即运行并将结果存储在列表中

从每次查询
QueuesByTeam
时的外观来看,它正在重新查询数据库,因此丢失了所做的更改


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

如果将
ToList()
语句放在select语句的末尾,会发生什么情况。这将强制读取数据库并将其存储在本地?您能否将
calls.owner=“----”替换为
owner=“”`?@bob vale-谢谢,这正是问题所在。你能回答这个问题吗?我会记下来的。谢谢你的帮助。mark只是为了澄清一下,要点是
call=>newcallvm
。您的查询将创建新的未附加对象,并执行2次查询。