在可分页列表中获取最新的活动
本文关键字:最新 活动 获取 分页 列表 | 更新日期: 2023-09-27 18:01:39
我正在创建一个网站,在主页上,我想看到最新的更新(最新的评论,事件等)这些实体有一个共同的属性,叫做Created
(DateTime
)。我想从这些活动中得到一个可分页的列表。
我有三个解决方案:
-
创建一个新的"连接表":
Id, Comment_Id, Event_Id, ..., Created
。所以我可以说GetTheLatestActivities(pageSize, pageIndex)
,当我得到这个列表时,我可以通过导航属性访问实体。这种方法的问题是数据冗余(+1表(和复杂的查询?)) -
使用每层次表(TPH):每个"活动"将存储在一个表中,所以我可以很容易地过滤记录。这种方法的问题是我的sql表模式将被反规范化,并且数据完整性将很弱(因为字段将是可空的以支持继承)
-
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
这个视图可以添加到您的模型中,并且您可以对它执行正常的分页跳过/采取