существует двусмысленность из-за doSomething (char [] obj) и doSomething (Integer obj).
char [] и Integer оба одинаковы выше для null, поэтому они двусмысленны.
Если Вы не должны возражать, что отслеживание установило DataContext. ObjectTrackingEnabled к ложь . При необходимости в нем можно использовать отражение для вызова внутреннего DataContext. ClearCache () , хотя необходимо знать, что начиная с ее внутреннего, это подвергается для исчезновения в будущей версии платформы. И насколько я могу сказать, сама платформа не использует его, но это делает , очищают объектный кэш.
Спасибо парни - я проверю метод ClearCache. Только для разъяснения (для будущих читателей), ситуация, в которой я получал память usuage, была чем-то вроде этого:
using(DataContext context = new DataContext())
{
while(true)
{
int skipAmount = 0;
var rows = context.tables.Select(x => x.Dept == "Dept").Skip(skipAmount).Take(100);
//break out of loop when out of rows
foreach(table t in rows)
{
//make changes to t
}
context.SubmitChanges();
skipAmount += rows.Count();
rows.Clear();
rows = null;
//at this point, even though the rows have been cleared and changes have been
//submitted, the context is still holding onto a reference somewhere to the
//removed rows. So unless you create a new context, memory usuage keeps on growing
}
}
DataContext отслеживает все объекты, которые он когда-либо выбирал. Это не выпустит это, пока это не будет собрано "мусор". Кроме того, поскольку это реализует IDisposable
, необходимо назвать Dispose
или использовать using
оператор.
Это - правильный способ пойти:
using(DataContext myDC = new DataContext)
{
// Do stuff
} //DataContext is disposed
Как David Points, необходимо избавиться от DataContext с помощью блока использования.
кажется, что Ваша первоочередная задача о создании и расположении набора объектов DataContext. Это - то, как linq2sql разработан. DataContext предназначен, чтобы иметь короткое время жизни. Так как Вы вытягиваете много данных из DB, он имеет смысл, что будет большое использование памяти. Вы на правильном пути путем обработки данных в блоках.
не боятся создания тонны DataContexts. Они разработаны, чтобы использоваться тот путь.