是否可以使用视图对数据进行分页?

时间:2019-07-15 17:59:40

标签: c# sql-server entity-framework

我目前有一个视图,该视图返回所有80K +记录。我想完成的是一种一次一次在这些记录中分页60行的方法。我在SQL上拥有的当前代码在视图中。我的问题是,是否可以使用我的视图一次翻阅这些记录60条记录?

视图

SELECT         o.ID, o.Name, o.DateRan, s.Name AS Job, o.Start, o.[End], o.Status, o.Logs 
FROM            dbo.output AS o LEFT OUTER JOIN 
                         dbo.jobs AS j ON o.Job = j.ID LEFT OUTER JOIN
                         dbo.scripts AS s ON  j.Script = s.ID 
Where o.DateRan < GETDATE()

ORDER BY o.ID DESC
OFFSET 0 ROWS FETCH NEXT 60 ROWS ONLY

使用DB上下文在c#中进行调用。

_output = new Entities();
_output.Configuration.ProxyCreationEnabled = false;
_output.Configuration.LazyLoadingEnabled = false;
var _ot = await _output.dashboardview.OrderByDescending(x=>x.ID).ToListAsync().ConfigureAwait(false);

期望的结果是能够成功浏览视图中的结果。

1 个答案:

答案 0 :(得分:1)

您有两个选项可以执行分页。

您可以在一个接受>>> a = [1,2,3] >>> b = "str" >>> print("{} {} {} {}".format(b, a[0], a[1], a[2])) str 1 2 3 >>> print("{} {} {} {}".format(b, *a)) str 1 2 3 pagination两个参数的新存储过程中移动视图的Skip(仅偏移0行抓取下一个60行)。 link

或者,您可以从View中使用简单的IQueryable,然后使用TakeSkip() linq方法。 link

在处理大型桌子时,我个人更喜欢第一种方法