c# - 我应该为 ObjectContext 使用 using 关键字吗?

标签 c# asp.net entity-framework

我在这个网站或 CodeProject 的某个地方读到,如果某个类已经实现了 IDisposable 接口(interface),那么好的规则是你应该使用 using 关键字,因为使用翻译成 MSIL 的关键字是 try/finally 阻止这样的事情:

try
{
   //some logic 
}
finally
{
   if (obj != null)
      {
         obj.Dispose();
      }
}

但是在观看 Entity Framework 的教程时,我遇到了这样的事情:

using(SampleBEntities db = new SampleBEntities()){//some logic here} 

SampleBEntities 继承自 ObjectContext 而在 MSDN lib 中 ObjectContext 没有实现 IDisposable?

最佳答案

是的,它确实实现了 IDisposable 接口(interface)。

public class ObjectContext : IDisposable

检查 MSDN

它有方法Dispose(),这些方法来自实现IDisposable接口(interface)。

如果它没有像您所说的那样实现,请单独运行,它甚至不会编译。

使用语句

Using 定义了一个范围,在这个范围之外一个或多个对象将被释放。

C# 通过 .NET Framework 公共(public)语言运行时 (CLR) 自动释放用于存储不再需要的对象的内存。内存的释放是不确定的;只要 CLR 决定执行垃圾回收,就会释放内存。

using 语句允许我们指定使用资源的对象何时应该释放它们。 提供给 using 语句的对象必须实现 IDisposable 接口(interface)。该接口(interface)提供了 Dispose 方法,该方法应该释放对象的资源。

using 语句可以在到达 using 语句的末尾时退出,或者如果抛出异常并且控制在语句结束之前离开语句 block 。

关于c# - 我应该为 ObjectContext 使用 using 关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11317009/

相关文章:

c# - 在所有重定向之后下载文件

C# ASP :ListBox hide vertical scrollbar

ASP.NET 自定义 RoleProvider - cookie 的使用

asp.net - 何时在最小起订量中指定某些设置

c# - 尝试克隆 Entity Framework 对象时违反了多重性约束

entity-framework - 如何阻止EF Core索引所有外键

C# - 使用完全输入的字符创建字符串

c# - 使用 .NET 重新启动 Windows 应用程序

asp.net - 用于验证下拉条目的正则表达式

c# - 无法将类型 'System.Data.EntityState' 隐式转换为 'System.Data.Entity.EntityState' 。存在显式转换(您是否缺少转换?)