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

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

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

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

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

11
задан Cynthia 31 August 2010 в 17:20
поделиться

1 ответ

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

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

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

Таким образом, для Entity Framework 4.0 ответ положительный.

14
ответ дан 3 December 2019 в 08:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: