Cada vez que escribo un programa del siguiente formulario usando LINQ to SQL, termino con un programa que solo agarra más y más memoria mientras corre y cae en un montón que consume 2GB después de quizás como poco como 25,000 registros. Siempre termino reescribiéndolo usando ADO.NET. ¿Qué estoy haciendo mal?Procesar grandes conjuntos de datos usando LINQ
Aclaración: Esta pregunta no trata sobre la velocidad de procesamiento; las respuestas sobre hacer que avance más rápido no son relevantes.
foreach (int i=0; i<some_big_number; i++)
{
using (myDC dc = new myDC()) // my DataContext
{
myRecord record = (from r in dc.myTable where r.Code == i select r).Single();
// do some LINQ queries using various tables from the data context
// and the fields from this 'record'. i carefully avoid referencing
// any other data context than 'dc' in here because I want any cached
// records to get disposed of when 'dc' gets disposed at the end of
// each iteration.
record.someField = newValueJustCalculatedAbove;
dc.SubmitChanges();
}
}
Creo que la respuesta a "¿Qué estoy haciendo mal?" es "Hacer lo mismo y esperar una respuesta diferente". Esto también es un signo de locura. Solo por patadas prueba algo más. Por ejemplo, escriba su código de acceso sql en ADO.Net FIRST y simplemente saltee toda esa mierda de linq. – NotMe
Pero LINQ no es excremento, como usted sugiere. Es la tecnología más elegante y persiste con eso es mi testimonio de eso, en lugar de un signo de locura. – Nestor