2012-03-08 97 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);