[英]How to implement SQL Server paging using C# and entity framework?
我必须使用实体框架用大约150,000条记录更新Sql Server表中的每一行。 为了减少服务器的点击次数,我想分批执行,每行1000行。 我需要实体框架来:
什么是实现这一目标的最佳方法?
我正在使用实体框架4和SQL Server 2012。
return query.Skip(HOW MUCH TO SKIP -AT THE BEGINNING WILL BE ZERO-)
.Take(HOW MUCH TO TAKE -THE NUMBER OF YOUR PAGING SIZE-).ToList();
如果要在循环中执行此操作,可以执行以下操作:
int pagingIncrement = 1000;
for (int i = 0; i <= 150 000; i=i+pagingIncrement)
{
var query = your actual LINQ query.
var results = query.Skip(i).Take(pagingIncrement);
UpdatePartialResults(results);
}
注意:重要的是,在更新这些行时,请不要在实际的LINQ查询中更新ORDER BY的条件,否则可能会一次又一次地更新相同的结果(由于重新排序)。
其他想法是用一些先前给定的想法扩展IEnumerable迭代器,例如Skip(counter).Take(pagingSize
和yield结果(将进行异步处理)。
这样的事情应该工作:
int skip =0;
int take = 1000;
for (int i = 0; i < 150; i++)
{
var rows = (from x in Context.Table
select x).OrderBy(x => x.id).Skip(skip).Take(take).ToList();
//do some update stuff with rows
skip += 1000;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.