情况:我想要做的是访问页面生命周期的数据上下文。这主要是为了(a)当访问延迟加载的属性时,避免使用()的一系列操作并避免(b)超出视图中的范围异常。MVC 4,EF 4.3在应用程序请求的生命周期中管理上下文
编辑:我使用MVC 4和Entity Framework 4.3.1(最新)
我通常做的是
using (MyDB b = new MyDB()) {
...do all my stuff
}
在我的控制器或数据层。根据我的阅读,这个很好的一点是它很干净,不会造成内存泄漏等问题。但缺点是,即使是单个页面的生命周期,我也会一次又一次地执行此操作,并且我的对象在因为我已经处理了上下文。
我做了一些阅读,发现一个类似的帖子从2009年,但在答案中没有代码。当然有些人已经找到了如何解决这个 - 我想我必须做一些事情
Application_BeginRequest and EndRequest
但我只是不知道如何和什么陷阱/最佳实践。
谢谢您的帮助,(有一些代码示例如果可能的话!)
感谢您可以返回 - 做了仓库的方式快速阅读我认为这对我的应用程序来说可能是一种矫枉过正的现象(至少在这一点上)。但是您的页面级访问上下文的解决方案看起来简单而优雅!我会尝试并回来。 – jeremy 2012-04-21 17:40:03
我添加了一个BaseController,我在一些较小的页面中继承了它,并添加了这些代码。我需要什么! – jeremy 2012-04-21 17:50:25
我之前使用过建议的知识库和工作单元,但过了一段时间后,我放弃了它,因为它太多而且通用性不够。所以我建议你尝试让你自己的解决方案。 – 2012-04-21 18:05:45