我正在处理我的应用程序中的100万条记录,这是从MySQL数据库中检索的.为此,我使用Linq获取记录并使用.Skip()和.Take()一次处理250条记录.对于每个检索到的记录,我需要创建0到4个项目,然后将其添加到数据库中.因此,必须创建的项目总数平均约为200万.
IQueryable<Object> objectCollection = dataContext.Repository<Object>();
int amountToSkip = 0;
IList<Object> objects = objectCollection.Skip(amountToSkip).Take(250).ToList();
while (objects.Count != 0)
{
using (dataContext = new LinqToSqlContext(new DataContext()))
{
foreach (Object objectRecord in objects)
{
// Create 0 - 4 Random Items
for (int i = 0; i < Random.Next(0, 4); i++)
{
Item item = new Item();
item.Id = Guid.NewGuid();
item.Object = objectRecord.Id;
item.Created = DateTime.Now;
item.Changed = DateTime.Now;
dataContext.InsertOnSubmit(item);
}
}
dataContext.SubmitChanges();
}
amountToSkip += 250;
objects = objectCollection.Skip(amountToSkip).Take(250).ToList();
}
Run Code Online (Sandbox Code Playgroud)
现在,在创建Items时出现问题.运行应用程序(甚至不使用dataContext …
下面的C#语句会阻止进程,如果itemToSkip大于0,则无法检索数据.
int itemToSkip = 100;
int itemToTake = 1000;
var itemList = db.MYTABLEs.Skip(itemToSkip).Take(itemToTake).ToList();
Run Code Online (Sandbox Code Playgroud)
我该如何解决?问题是什么?