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