Как написать «Последнее видел» логику подобное на стеке переполнить
-
02-10-2019 - |
Вопрос
Я работаю над приложением, которое имеет похожую логику, так как в отношении того, когда пользователь был в последний раз видели. Я столкнулся с концептуальной проблемой, что я надеюсь, что некоторые из вас, с тобой, может помочь мне.
Вся активность регистрируется в таблице действийLog в базе данных
Когда зарегистрированная в пользователе используется сайт, и создается новая сессия, я обновляю журнал активности с помощью UserID и некоторую очень общую информацию. То же самое происходит, когда они создают новую запись, обновите свой профиль и т. Д.
Проблема у меня есть это.
Если я использую самый последний пункт деятельности, то перейду на свою страницу личной учетной записи, «Последний вид» появляется как 1 секунду назад, потому что я просто нажимал на СЕССИОН Я был там «последний», а не когда я там ».
Тем не менее, если я использую Skip(1).Take(1)
Чтобы получить второй рекорд в базе данных, то когда кто-то другой просмотрует мой профиль, в то время как у меня может быть «просто», подписанный ... Они увидят, что я был на неделю назад, а не сегодня.
Какую логику вы бы использовали, чтобы иметь свой пирог и съесть это тоже?
Я использую ASP.NET MVC2 и LINQ для SQL, но я думаю, что этот вопрос больше языка агностики.
Решение
Похоже, вы могли бы просто показать вторую последнюю запись для текущего пользователя, и для всех остальных пользователей покажет самый последний.
Другие советы
Что я бы сделал (просто чтобы избежать большой логической петли) было бы добавить два поля. current_seen
и last_seen
. Отказ При движении входа в систему current_seen
к last_seen
и установить current_seen
на текущий момент времени. Затем отобразить last_seen
Как их «последний раз видели на XX / XX / XXX».
Одно место для поиска - это исходный код для OSQA (система Q & A с открытым исходным кодом) -
И да, это выглядит очень похоже на стековерфол (чтобы сказать наименее).