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

时间:2011-07-11 11:50:14

标签: c# entity-framework code-first

我正在创建一个网站,在主页面上,我希望看到最新的更新(最新评论,活动等......) 这些实体具有名为CreatedDateTime)的公共属性。我希望从这些活动中获得可分页的列表。

我有3个解决方案:

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

  2. 使用每个层次结构表(TPH):每个“活动”都将存储在一个表中,因此我可以轻松过滤记录。这种方法的问题是我的sql表方案将被非规范化,并且数据完整性会很弱(因为这些字段将是支持继承的nullables)

  3. GetAll实体(CommentsEvents等..),并使用LINQ(每个对象支持ICreated接口过滤此连接列表,以便我可以OrderBy日期和使用Skip/Take)。显而易见的问题是性能,我会在每个请求中获取db中的所有记录,并在“客户端”进行过滤。

  4. 我认为最好的是第一个,还是有更好的解决方案?

    谢谢

1 个答案:

答案 0 :(得分:0)

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

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

此视图可以添加到您的模型中,您可以执行常规分页跳过/接受它。