如何选择 - 更新 - 首先使用EF代码打印

时间:2012-03-08 03:10:50

标签: asp.net-mvc entity-framework ef-code-first

我有一个“通知”类,其名称为“新”。现在我想要的是:

  1. 使用New == true选择所有通知。
  2. New更新为false。
  3. 为用户(Razor)打印我从(1)获得的所有内容。
  4. 所以这是我的代码:

    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>
    

1 个答案:

答案 0 :(得分: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);