【发布时间】:2015-08-29 19:27:09
【问题描述】:
在 C# MVC EF 框架中,我看到很多示例在需要插入或查询时简单地创建一个新的DbContext,然后关闭/释放它(许多使用“使用”来自动关闭/释放)。
对此进行了一些搜索但找不到好的答案,但是创建DbContext 是一种非常便宜且快速的操作吗?
例如,考虑一个典型的 MVC 应用程序,在页面上它有许多“组件”,例如页眉、侧边栏、主要内容等,并且在一个不平凡的设置中,每个组件都有自己的单独的逻辑和代码——我是否想在每个组件中创建一个新的DbContext? (如果是,系统会自动缓存查询结果吗?——例如,一个常见的用例是,在每个组件中,它需要查询数据库以获取当前站点范围的设置,即表)。
【问题讨论】:
-
这是你容易测试和观察到的东西。试试看吧!
-
@Cubicle.Jockey 他应该在哪里做呢?控制器似乎是个好地方。
-
我没有将其发布为答案,因为我在 MSDN 上找不到原始页面,但是,准备好有效地创建和销毁上下文,创建上下文的唯一昂贵部分是底层数据库连接和 EF 将管理它,当您销毁上下文时它不会关闭它,它有一个管理它们的内部池
-
参见 msdn.microsoft.com/en-us/library/vstudio/… 和 oakleafblog.blogspot.de/2008/08/… :只有第一次启动上下文是昂贵的,重新创建上下文非常快,被认为是好的做法。
-
如果你这么关注性能,不要使用实体框架:)
标签: c# asp.net-mvc entity-framework