スタックオーバーフローでそのような「最後に見た」ロジックを書く方法
-
02-10-2019 - |
質問
私は、ユーザーが最後に見られたときに関して、同様のロジックを持つアプリケーションに取り組んでいます。私は、グルの何人かが私を助けることができることを望んでいるという概念的な問題に遭遇しました。
すべてのアクティビティはデータベース内のActivityLogテーブルに記録されます
ログインしたユーザーがサイトにヒットし、新しいセッションが作成されると、ユーザーIDといくつかの非常に一般的な情報を使用してアクティビティログを更新します。新しいレコードを作成したり、プロフィールを更新したりすると同じことが起こります。
私が抱えている問題はこれです。
最新のアクティビティアイテムを使用して、個人アカウントページに移動する場合、セッションスタートでDBをヒットしたばかりなので、「最後の見られた」が1秒前に表示されます...これは良くありません。私は「最後」でしたが、今そこにいるときではなく、「最後」でした。
ただし、使用する場合 Skip(1).Take(1)
データベースで2番目のレコードを取得するために、他の誰かが私のプロフィールを表示しているときに、私が「ちょうど」サインオンしているかもしれません...彼らは私が1週間前ではなく、私が発言していたことを見るでしょう。
ケーキを食べて食べるために、どのような論理を使用しますか?
私はASP.NET MVC2とLINQをSQLに使用していますが、この質問はより言語不可欠なものだと思います。
解決
現在のユーザーに2番目に最新のレコードを表示できるように思えます。他のすべてのユーザーに最新のユーザーを表示します。
他のヒント
私がすること(単に大きなロジックループを避けるために)は、2つのフィールドを追加することです。 current_seen
と last_seen
. 。ログイン移動時 current_seen
に last_seen
とセット current_seen
現在のタイムスタンプへ。次に、表示します last_seen
「xx/xx/xxxで最後に見た」と同様。
見るべき場所の1つは、OSQAのソースコード(オープンソースQ&Aシステム)です -
そして、はい、それはstackoverflowによく似ています(控えめに言っても)。