Каждый раз, когда я пишу программу формы, использующую LINQ to SQL, я получаю программу, которая просто захватывает все больше и больше памяти при ее запуске и падает в куче, потребляя 2 ГБ после, возможно, как всего 25 000 записей. Я всегда переписываю его с помощью ADO.NET. Что я делаю не так?Обработка больших наборов данных с использованием LINQ
Уточнение: этот вопрос касается не скорости обработки; ответы о том, чтобы сделать это быстрее, не имеют никакого отношения.
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();
}
}
Я думаю, что ответ на вопрос «Что я делаю неправильно?» «Выполнять то же самое и ожидать другого ответа». Это также признак безумия. Просто для пинков попробовать что-то еще. Например, напишите свой код доступа sql в ADO.Net FIRST и просто пропустите все, что связано с linq. – NotMe
Но LINQ - это не экскремент, как вы предлагаете. Это самая элегантная из технологий и упорство в этом - это мое свидетельство этого, а не признак безумия. – Nestor