Entity Framework - _objectTypeCount после удаления - PullRequest
2 голосов
/ 15 августа 2011

На моем сайте есть ObjectContextStorage, который хранит в себе весь ObjectContext. После выполнения http-запроса я выбрасываю это хранилище (удаляю его из HttpContext.Current.Items) и располагаю ObjectContexts в этом хранилище.

Теперь, когда я отлаживаю и смотрю на _objectTypeCount моего ObjectContext, он продолжает расти, когда я перезагружаю свой веб-сайт, пока я думаю, что старый ObjectContext удаляется ??

Почему старый ObjectContext остается в моей памяти после его удаления?

1 Ответ

5 голосов
/ 16 августа 2011

Вы смотрите статическую переменную класса ObjectContext:

private static int _objectTypeCount; // Bid counter
internal readonly int ObjectID = System.Threading.Interlocked.Increment(
                                                       ref _objectTypeCount);

Понятия не имею, какова цель этого. (Он подсчитывает, как часто ObjectContext создавался в течение времени жизни приложения или сеанса, или что-то в этом роде)

Но поскольку он статический , из постоянно растущего счетчика нельзя сделать вывод, что ваши ObjectContext экземпляры не были удалены из памяти.

Редактировать

Этот счетчик и ObjectID в коде явно связаны с так называемой BID tracing . « BID » означает « Встроенная диагностика ». Конструкция внутреннего кода выше встречается во многих классах ADO.NET. Он используется только для отслеживания вызовов методов в этих классах и встречается в функциях трассировки следующим образом:

EntityBid.Trace("<ec.EntityCommandDefinition.CreateCommand|ADV> %d#\n",ObjectID);

_objectTypeCount и ObjectID как раз для того, чтобы дать экземпляру типа имя (или уникальный идентификатор) для трассировки вывода.

Помимо трассировки, он не имеет функционального значения внутри класса ObjectContext.

...