我正在处理一个非常大的数据集,大约有 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 });
}
注意:批处理方法来自这个项目:https ://code.google.com/p/morelinq/
搜索客户端是这样的:https ://github.com/Mpdreamz/NEST