Je interroge 200k enregistrements et utilise toute la mémoire du serveur (sans surprise). Je suis nouveau sur LINQ donc j'ai trouvé le code suivant qui devrait m'aider mais je ne sais pas comment l'utiliser :
public static IEnumerable> Batch(this IEnumerable collection, int batchSize)
{
List nextbatch = new List(batchSize);
foreach (T item in collection)
{
nextbatch.Add(item);
if (nextbatch.Count == batchSize)
{
yield return nextbatch;
nextbatch = new List(batchSize);
}
}
if (nextbatch.Count > 0)
yield return nextbatch;
}
Source: http://goo.gl/aQZIj
Voici mon code qui crée l'erreur "hors mémoire". Comment puis-je incorporer la nouvelle fonction Batch dans mon code ?
var crmMetrics = _crmDbContext.tpm_metricsSet.Where(a => a.ModifiedOn >= lastRunDate);
foreach (var crmMetric in crmMetrics)
{
metric = new Metric();
metric.ProductKey = crmMetric.tpm_Product.Id;
dbContext.Metrics.Add(metric);
dbContext.SaveChanges();
}