我正在处理一个非常大的数据集,大约有200万条记录.我有下面的代码,但是在它处理了三个批次,大约600,000条记录后得到了一个内存不足的例外.我理解,因为它循环遍历每个批处理实体框架的延迟加载,然后尝试将完整的200万条记录构建到内存中.有没有办法卸载我处理过的批次?
ModelContext dbContext = new ModelContext();
IEnumerable<IEnumerable<Town>> towns = dbContext.Towns.OrderBy(t => t.TownID).Batch(200000);
foreach (var batch in towns)
{
SearchClient.Instance.IndexMany(batch, SearchClient.Instance.Settings.DefaultIndex, "Town", new SimpleBulkParameters() { Refresh = false });
}
Run Code Online (Sandbox Code Playgroud)
注意:批处理方法来自此项目:https://code.google.com/p/morelinq/
搜索客户端是这样的:https://github.com/Mpdreamz/NEST