Entity Framework: управление кэшем? - PullRequest
       16

Entity Framework: управление кэшем?

2 голосов
/ 02 февраля 2011

Я использую Entity Framework 4.0 за сервисами WCF.Моя проблема заключается в том, что объем памяти, используемой программой, сильно растет (начиная с 200Mo, и я остановил ее на ~ 1.1Go.

Как я могу управлять кешем? Я имею в виду, у меня два datacontext,один из них никогда не используется для чтения данных, поэтому я могу отключить кэш?

А для другого я могу указать количество места, которое он может использовать? Есть ли способ контролировать эти ресурсы?способ использовать меньше ресурсов?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 02 февраля 2011

Прежде всего, вы не должны использовать общие контексты . Создайте новый контекст для каждого запроса WCF и избавьтесь от контекста, прежде чем завершить обработку операции! Если вам нужно кэширование данных, делайте это вне EF. Сам EF не должен использоваться в качестве кэша, и это поведение не контролируется.

Если вы размещаете свою службу в IIS, вы можете настроить утилизацию AppPool, указав «Частное ограничение памяти» в дополнительных настройках AppPool. Но это просто убьет все, что работает в этом AppPool.

1 голос
/ 02 февраля 2011

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

  • Разве вы не утилизируете текст данных каждый раз, когда используете его?клиент?
  • Вы используете режим сеанса связи?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...