Я работаю над приложением, которое имеет логику, аналогичную SO, в отношении того, когда пользователя в последний раз видели. Я столкнулся с концептуальной проблемой, с которой, я надеюсь, некоторые из вас, гуру, могут мне помочь.
Все действия регистрируются в таблице ActivityLog в базе данных
Когда вошедший в систему пользователь посещает сайт и создается новый сеанс, я обновляю журнал активности с помощью идентификатора пользователя и некоторой очень общей информации. То же самое происходит, когда они создают новую запись, обновляют свой профиль и т. Д.
У меня проблема в следующем.
Если я использую самый последний элемент активности, а затем перехожу на страницу моей личной учетной записи, «Последнее посещение» отображается как 1 секунда назад, потому что я ПРОСТО БЫЛ на БД при запуске сеанса ... Это не хорошо, потому что я хочу чтобы увидеть, что я был "последним" там, а не когда я там "сейчас".
Однако, если я использую Skip(1).Take(1)
, чтобы получить вторую запись в базе данных, то когда кто-то еще просматривает мой профиль, в то время как у меня может быть "только что" зарегистрирован ... они увидят, что я был, скажем, неделю назад, а не сегодня.
Какую логику вы бы использовали, чтобы иметь свой пирог и есть его?
Я использую ASP.NET MVC2 и Linq to SQL, но я думаю, что этот вопрос более независим от языка.