我正在使用Entity Framework开发ASP MVC应用程序。我正在考虑编写代码来缓存模型构建器返回的对象(正如几个来源所推荐的那样),但后来我在Scott Gu的博客上遇到了这个问题:
“上面的OnModelCreating方法将在我们的NerdDinners类首次在正在运行的应用程序中使用时被调用,并且它作为参数传递一个”ModelBuilder“对象.BodeBuilder对象可用于自定义模型的数据库持久性映射规则我们将在下面看一些如何做到这一点的例子。
“EF仅在正在运行的应用程序中调用”OnModelCreating“方法 - 然后自动缓存ModelBuilder结果。这样可以避免每次实例化NerdDinners类时模型创建的性能损失,并且意味着您不必编写任何自定义缓存逻辑来在应用程序中获得出色的性能。
这是否意味着EF会自动缓存ModelBuilder对象,而且我不必编写代码来执行此操作,或者只有在重写OnModelCreating方法时才会执行此操作,或者......?
来自 实体框架博客 关于EF 4的性能改进
模型缓存
涉及一些成本
发现模型,处理数据
注释和应用流畅的API
组态。为了避免招致这种情况
每次派生的DbContext都会花费
实例化模型被缓存
在第一次初始化期间。该
然后每次重新使用缓存模型
相同的派生上下文是
在同一个AppDomain中构建。
可以关闭模型缓存
设置CacheForContextType
ModelBuilder中的属性为'false'
OnModelCreating方法。
因此,Entity Framework 4.0的答案是肯定的
来自 实体框架博客 关于EF 4的性能改进
模型缓存
涉及一些成本
发现模型,处理数据
注释和应用流畅的API
组态。为了避免招致这种情况
每次派生的DbContext都会花费
实例化模型被缓存
在第一次初始化期间。该
然后每次重新使用缓存模型
相同的派生上下文是
在同一个AppDomain中构建。
可以关闭模型缓存
设置CacheForContextType
ModelBuilder中的属性为'false'
OnModelCreating方法。
因此,Entity Framework 4.0的答案是肯定的