2012-03-08 92 views
0

我有一个名为“New”的类“Notice”。现在我想要的是:如何选择 - 更新 - 使用EF代码打印首先

  1. 选择所有通知与New == true
  2. New更新为false。
  3. 打印所有我从(1)获得的用户(剃刀)。

因此,这里是我的代码:

var Notices = core.Notices.Where(n => n.New == true).Take(20); 

foreach (var n in Notices) 
{ 
    n.New = false; 
} 

core.SaveChanges(); 

return View(Notices); 

但经过更新的所有通知,我什么也没得到我的看法!?!?

更新:这里是我的看法:

@model IEnumerable<ESN.Models.UserNotice> 
<div> 
@foreach (var n in Model) 
{ 
    <div style="border-bottom: 2px solid";> 
     @Html.Raw(n.NContent) 
    </div> 
} 
</div> 
+2

你需要添加视图代码,因为它无法告诉是怎么回事,没有它。也不要使用大写字母的变量,并且在where子句中不需要== true。 – kmcc049 2012-03-08 04:51:33

+0

感谢您的提示!你能告诉我为什么没有大写字母的变量吗? – nvcnvn 2012-03-08 05:31:12

回答

1

它是延迟执行陷阱。您定义了一个linq查询core.Notices.Where(n => n.New).Take(20)。在您的视图中重新执行相同的查询。但你只是修改所有的通知不是新的。可能的解决方案:

  • core.Notices.Where(n => n.New).Take(20).ToList()
  • 重新定义查询修改后:Notices = core.Notices.Where(n => !n.New).Take(20);