8

我正在开发一个应用程序,该应用程序在用户最后一次出现时具有与 SO 类似的逻辑。我遇到了一个概念问题,我希望你们中的一些大师可以帮助我。

所有活动都记录在数据库中的 ActivityLog 表中

当登录用户访问该站点并创建一个新会话时,我会使用 UserID 和一些非常通用的信息更新活动日志。当他们创建新记录、更新个人资料等时也会发生同样的事情。

我遇到的问题是这个。

如果我使用最近的活动项目,然后导航到我的个人帐户页面,“最后一次看到”显示为 1 秒前,因为我刚刚在会话开始时点击了数据库……这不好,因为我想看看什么我在那里是“最后一个”,而不是“现在”在那里。

但是,如果我Skip(1).Take(1)用来获取数据库中的第二条记录,那么当其他人查看我的个人资料而我可能“刚刚”登录时......他们会看到我是在一周前而不是今天。

你会用什么样的逻辑来得到你的蛋糕并吃掉它?

我正在使用 ASP.NET MVC2 和 Linq to SQL,但我认为这个问题与语言无关。

4

3 回答 3

3

我要做的(只是为了避免大的逻辑循环)是添加两个字段。current_seenlast_seen。登录时移至current_seenlast_seen设置current_seen为当前时间戳。然后显示last_seen为他们的“最后一次出现在 XX/XX/XXX”。

于 2010-07-06T17:52:59.010 回答
3

听起来您可以只为当前用户显示第二个最近的记录,而为所有其他用户显示最近的一个。

于 2010-07-06T17:53:18.890 回答
2

一个值得关注的地方是 OSQA(开源问答系统)的源代码 -

http://www.osqa.net/

是的,它看起来很像 StackOverflow(至少可以这么说)。

于 2010-07-06T17:52:51.567 回答