我看到很多关于MVC、Repository 模式、Unit of Work 和EF 的示例,例如here , 接口(interface)和类都实现了 IDisposable
界面。我猜这个接口(interface)只公开了方法 Dispose()
有 2 个重载。
但是在很多其他高级程序员的例子中,我并没有看到这样的实现。实际上对我来说,在每个 Web 请求中关闭一个组件似乎很合乎逻辑,因为每个请求都会获得一个全新 Controller 实例。
或者即使情况并非如此,我想通过使用诸如 Ninject 之类的依赖项注入(inject)框架,我们将所有这些处理任务委托(delegate)给了框架。
也可能是旧版本的 EF 或 MVC 框架需要实现 IDisposable。
有人可能会指出我正确的方向吗?
更新
可以在具有Service 和Repository 层的分层应用程序中看到上下文的自动处理。假设我们从两个组件返回 IQueryable<T>
对象,如果我们尝试从 Controller 填充对象,通过迭代它的项目或调用 ToList()
方法,我们得到一个运行时错误,指出上下文无法访问(关闭)
最佳答案
常见的模式是在每个 Controller 中都有一个 Repository 实例,并将 Disposal 链接到 Controller 的 Dispose() 中。
所以我会说模式通常是必需的。
However in many other examples made by senior programmers, I do not see such implementation.
有几种可能性:
- 是Demo代码,省略了错误和资源处理。
- 模式在一个不明显的地方实现(基类)
举个具体的例子,我们就可以知道了。
关于c# - 在MVC中使用Entity Framework是否需要实现IDisposable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9886306/