我认为这是一个简单的情况 - 但我已经坚持了一段时间了。
我只是查询数据库,并将结果放入viewmodel:CallVM
- 该部分工作正常。
我想要做的是,它遍历QueueByTeam
对象,并更新其中一个属性 - 但是,“循环”部分不会将更改保存到QueueByTeam
对象,所以当我将对象返回到View时,我的更新被忽略了:
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());
在返回View之前,我是否需要在foreach循环之后执行某些操作来保存更改?
谢谢,Mark
答案 0 :(得分: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语句中,而不是单独进行循环。