Как выбрать - обновить - сначала распечатать с кодом EF - PullRequest
0 голосов
/ 08 марта 2012

У меня есть класс "Notice" с именем attr "New". Теперь то, что я хочу, это:

  1. Выбрать все уведомления с помощью New == true.
  2. Обновите New до false.
  3. Распечатать все, что я получаю из (1) для пользователя (Razor).

Так вот мой код:

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 Ответ

1 голос
/ 08 марта 2012

Это ловушка отложенного исполнения. Вы определили запрос 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);
...