在可分页列表中获取最新的活动

本文关键字:最新 活动 获取 分页 列表 | 更新日期: 2023-09-27 18:01:39

我正在创建一个网站,在主页上,我想看到最新的更新(最新的评论,事件等)这些实体有一个共同的属性,叫做Created (DateTime)。我想从这些活动中得到一个可分页的列表。

我有三个解决方案:

  1. 创建一个新的"连接表":Id, Comment_Id, Event_Id, ..., Created。所以我可以说GetTheLatestActivities(pageSize, pageIndex),当我得到这个列表时,我可以通过导航属性访问实体。这种方法的问题是数据冗余(+1表(和复杂的查询?))

  2. 使用每层次表(TPH):每个"活动"将存储在一个表中,所以我可以很容易地过滤记录。这种方法的问题是我的sql表模式将被反规范化,并且数据完整性将很弱(因为字段将是可空的以支持继承)

  3. GetAll实体(Comments, Events等),并使用LINQ过滤此连接列表(每个对象支持ICreated接口,因此我可以OrderBy日期和使用Skip/Take)。明显的问题是性能,我会在每个请求中从数据库中获取所有记录,并在"客户端"进行过滤。

我认为最好的是第一个,或者有没有更好的解决方案?

谢谢

在可分页列表中获取最新的活动

您可以创建一个显示公共字段联合的视图:

select t1.Table1Id as Id, t1.Name as Description, t1.Job, t1.Created from Table1 t1
union all
select t2.Table2Id as Id, t2.Description, null as Job, t2.Created from Table2 t2

这个视图可以添加到您的模型中,并且您可以对它执行正常的分页跳过/采取