我正在开发一个与上次看到用户时具有类似SO逻辑的应用程序。我遇到了一个概念问题,我希望你们中的一些人可以帮助我。
所有活动都记录在数据库的ActivityLog表中
当登录用户访问该站点并创建新会话时,我使用UserID和一些非常通用的信息更新活动日志。当他们创建新记录,更新他们的个人资料等时会发生同样的事情。
我遇到的问题是这个。
如果我使用最新的活动项目,然后导航到我的个人帐户页面,“Last Seen”显示为1秒前因为我刚刚在会话开始时点击数据库...这不好,因为我想要看看我在那里“最后”,而不是“我现在”在那里。
但是,如果我使用Skip(1).Take(1)
来获取数据库中的第二条记录,那么当其他人查看我的个人资料时,我可能已“正好”登录...他们会看到我在说一周前而不是今天。
你会用什么样的逻辑来吃蛋糕呢?
我正在使用ASP.NET MVC2和Linq to SQL,但我认为这个问题与语言无关。
答案 0 :(得分:3)
我会做的(只是为了避免一个大的逻辑循环)将添加两个字段。 current_seen
和last_seen
。登录时将current_seen
移至last_seen
并将current_seen
设置为当前时间戳。然后将last_seen
显示为“最后在XX / XX / XXX上看到”。
答案 1 :(得分:3)
听起来您可以显示当前用户的第二个最新记录,并且对于所有其他用户显示最新记录。
答案 2 :(得分:2)