Подтвердить что ты не робот

Ли Entity Framework автоматически кэширует модель ModelBuilder?

Я разрабатываю приложение ASP MVC с использованием Entity Framework. Я подумывал написать код для кэширования объекта, возвращенного ModelBuilder (как рекомендуется несколькими источниками), но затем я столкнулся с этим в блоге Скотта Гуга:

"Метод OnModelCreating выше будет называться в первый раз, когда наш класс NerdDinners используется в запущенном приложении, и он передается объекту ModelBuilder в качестве аргумента. Объект ModelBuilder может использоваться для настройки правил сопоставления персистентности базы данных наших образцовых объектов. Посмотрите на некоторые примеры того, как это сделать ниже.

"EF только вызывает метод OnModelCreating один раз в пределах запущенного приложения - , а затем автоматически кэширует результаты ModelBuilder. Это позволяет избежать хитов производительности при создании модели каждый раз, когда создается экземпляр класса NerdDinners и означает, что вам не нужно писать какую-либо пользовательскую логику кэширования, чтобы получить отличную производительность в ваших приложениях".

Означает ли это, что EF автоматически кэширует объект ModelBuilder, и мне не нужно писать код, чтобы сделать это, или это то, что выполняется, только если метод OnModelCreating переопределен или...??

4b9b3361

Ответ 1

Из Блог Entity Framework относительно улучшения производительности в EF 4

Кэширование модели

Есть некоторые затраты, связанные с обнаружение модели, обработка данных Аннотации и применение свободного API конфигурации. Чтобы избежать этого стоить каждый раз, когда производный DbContext экземпляр моделируется в кеше во время первой инициализации. кэшированная модель затем повторно используется каждый раз тот же производный контекст построенный в том же AppDomain. Кэширование модели может быть отключено установка CacheForContextType свойство на ModelBuilder для 'false в метод OnModelCreating.

Итак, ответ да для Entity Framework 4.0