8

私は、ユーザーが最後に見られたときに関して SO と同様のロジックを持つアプリケーションに取り組んでいます。私は概念的な問題に遭遇しました。グルの何人かが私を助けてくれることを願っています。

すべてのアクティビティは、データベースの ActivityLog テーブルに記録されます

ログインしたユーザーがサイトにアクセスし、新しいセッションが作成されると、ユーザー ID と非常に一般的な情報でアクティビティ ログを更新します。新しいレコードを作成したり、プロファイルを更新したりするときにも同じことが起こります。

私が抱えている問題はこれです。

最新のアクティビティ項目を使用して個人アカウント ページに移動すると、セッション開始時にデータベースにアクセスしただけなので、「最後に見たもの」は 1 秒前と表示されます...何を見たいので、これは良くありません。私は「今」そこにいるときではなく、「最後」にそこにいました。

ただし、Skip(1).Take(1)データベースで 2 番目のレコードを取得するために使用した場合、「ちょうど」サインオンしているときに他の誰かが私のプロファイルを表示すると、今日ではなく 1 週間前にサインオンしたことがわかります。

ケーキを食べて食べるには、どのような論理を使いますか?

ASP.NET MVC2 と Linq to SQL を使用していますが、この質問は言語に依存しないと思います。

4

3 に答える 3

3

(単純に大きなロジック ループを避けるために) 私がすることは、2 つのフィールドを追加することです。current_seenlast_seen。ログイン時に、現在のタイムスタンプに移動current_seenlast_seenて設定します。current_seen次にlast_seen、「最後に見た XX/XX/XXX」として表示します。

于 2010-07-06T17:52:59.010 に答える
3

現在のユーザーについては 2 番目に新しいレコードを表示し、他のすべてのユーザーについては最新のレコードを表示することができるようです。

于 2010-07-06T17:53:18.890 に答える
2

OSQA (オープン ソースの Q&A システム) のソース コードを参照してください。

http://www.osqa.net/

はい、それは (控えめに言っても) StackOverflow によく似ています。

于 2010-07-06T17:52:51.567 に答える