Entity Framework Code First 4.1 Объем памяти рабочего процесса IIS постоянно растет - PullRequest
1 голос
/ 27 ноября 2011

У меня есть небольшой веб-сайт (MVC 3), который занимается сбором основных данных. У меня есть некоторые, казалось бы, случайные таймауты, и после исследования я заметил, что всякий раз, когда выполняется страница, содержащая операции CRUD, использование памяти рабочего процесса IIS увеличивается, но никогда не уменьшается.

Сайт использует EF Code First. Это моя первая попытка EFCF, поэтому я не удивлюсь, если создам проблему. Будем весьма благодарны за любые предложения о том, что я должен проверять, или о лучших практиках обращения с объектами для обеспечения их правильной утилизации после завершения представления.

При необходимости могу предоставить пример кода.

1 Ответ

3 голосов
/ 28 ноября 2011

Убедитесь, что ваш код не держит ссылку на ваш DBContext. Ваш экземпляр DBcontext должен быть максимально коротким. Также проверьте, не отключено ли отслеживание объектов. Если отслеживание объекта включено, и вы сохраняете экземпляр вашего DBContext в качестве переменной сеанса / приложения / статической переменной. тогда ваша память будет расти.

Чтобы отключить отслеживание объектов, создайте свои запросы следующим образом

от e в mycontext.Entities. AsNoTracking () где (условие) выберите e

Это остановит dbcontext от кэширования ваших сущностей.

...