Entity Framework是否自动缓存ModelBuilder模型?

Cyn*_*hia 11 caching entity-framework

我正在使用Entity Framework开发ASP MVC应用程序.我正在考虑编写代码来缓存模型构建器返回的对象(正如几个来源所推荐的那样),但后来我在Scott Gu的博客上遇到了这个问题:

"上面的OnModelCreating方法将在我们的NerdDinners类首次在正在运行的应用程序中使用时被调用,并且它作为参数传递一个"ModelBuilder"对象.ChildBuilder对象可用于自定义模型的数据库持久性映射规则我们将在下面看一些如何做到这一点的例子.

"EF仅在正在运行的应用程序中调用"OnModelCreating"方法 - 然后自动缓存模型构建器结果.这样可以避免每次实例化NerdDinners类时模型创建的性能损失,并且意味着您不必编写任何自定义缓存逻辑,可在您的应用程序中获得出色的性能."

这是否意味着EF会自动缓存ModelBuilder对象,而且我不必编写代码来执行此操作,或者只有在重写OnModelCreating方法时才会执行此操作,或者......?

Jos*_*osh 14

来自实体框架博客,关于EF 4中的性能改进

模型缓存

发现模型,处理数据注释和应用流畅的API配置涉及一些成本.为了避免每次实例化派生的DbContext时产生此成本,在第一次初始化期间缓存模型.每次在同一AppDomain中构造相同的派生上下文时,都会重新使用缓存的模型.可以通过在OnModelCreating方法中将模型构建器上的CacheForContextType属性设置为"false"来关闭模型缓存.

因此,Entity Framework 4.0的答案是肯定的