c# - 在MVC中使用Entity Framework是否需要实现IDisposable?

标签 c# asp.net-mvc entity-framework idisposable

我看到很多关于MVCRepository 模式、Unit of WorkEF 的示例,例如here , 接口(interface)和类都实现了 IDisposable界面。我猜这个接口(interface)只公开了方法 Dispose()有 2 个重载。

但是在很多其他高级程序员的例子中,我并没有看到这样的实现。实际上对我来说,在每个 Web 请求中关闭一个组件似乎很合乎逻辑,因为每个请求都会获得一个全新 Controller 实例。

或者即使情况并非如此,我想通过使用诸如 Ninject 之类的依赖项注入(inject)框架,我们将所有这些处理任务委托(delegate)给了框架。

也可能是旧版本的 EF 或 MVC 框架需要实现 IDisposable

有人可能会指出我正确的方向吗?

更新

可以在具有ServiceRepository 层的分层应用程序中看到上下文的自动处理。假设我们从两个组件返回 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/

相关文章:

C#按键; Label 中的显示键

C# 如何停止控制台程序等待下一行的输入?

asp.net - 将字符串数组作为参数传递给 asp.net mvc webapi 方法

c# - 使 Entity Framework 只读

entity-framework - 如何使用代码优先迁移创建数据库?

c# - 什么加倍?在 C# 中是什么意思?

c# - 有没有办法让 FtpWebRequest/FtpWebResponse 与 SSH.NET dll 一起使用?

asp.net-mvc - ASP.NET MVC : Unit testing controllers that use UrlHelper

c# - 在 MVC View 中为 HTML DropDownList 创建标签和值

c# - 使用过滤器对象的 Linq where 子句