【发布时间】:2012-03-27 09:00:48
【问题描述】:
我在很多例子中看到了 MVC、Repository 模式、Unit of Work 和 EF,例如here,接口和类都实现了IDisposable 接口。我猜这个接口只暴露了 Dispose() 方法,有 2 个重载。
但是在高级程序员制作的许多其他示例中,我没有看到这样的实现。实际上对我来说,在每个 Web 请求上都取消一个组件似乎很合乎逻辑,因为每个请求都会获得一个 全新的 控制器实例。
或者即使不是这样,我想通过使用诸如 Ninject 之类的依赖注入框架,我们将所有这些处置任务委托给该框架。
在旧版本的 EF 或 MVC 框架中也可能需要实现 IDisposable。
有人可以指出我正确的方向吗?
更新
可以在具有 Service 和 Repository 层的分层应用程序中看到上下文的自动处置。假设我们从两个组件返回 IQueryable<T> 对象,如果我们尝试从控制器填充对象,通过迭代其项目或调用 ToList() 方法,我们会收到一个运行时错误,指出上下文不可达(关闭)
【问题讨论】:
-
猜想这个接口只公开了带有 2 个重载的 Dispose() 方法 - 不,该接口定义了 1 个重载。另一个属于实现模式。
标签: c# asp.net-mvc entity-framework idisposable