【问题标题】:Disposing Database context with using statement in MVC在 MVC 中使用 using 语句处理数据库上下文
【发布时间】:2013-09-01 09:10:22
【问题描述】:

我在我的 MVC 网站中使用实体框架,并使用 using 语句处理我的数据库上下文。现在我的问题是,如果我在返回后关闭 using 语句,数据库上下文是否会正确处理。例如:

 public ActionResult SomeAction(){

      using (var DB = new DatabaseContext()){

       ....           

       return View();                
      }
 }

在返回之前我必须关闭 using 语句吗?或者它会以我使用它的方式正确处理。

【问题讨论】:

标签: asp.net-mvc entity-framework asp.net-mvc-4 using


【解决方案1】:

在返回之前我必须关闭 using 语句吗?或者它会以我使用它的方式妥善处理?

它将自动为您处置。您可以参考this answer 了解更多信息。Dispose 方法被调用,但using 语句被执行,除非它是一个突然的全进程终止。最常见的情况是:

  • 块内的return
  • 块内抛出(但未被捕获)异常
  • 自然到达方块的尽头

基本上,using 语句主要是 try/finally 块的语法糖 - 并且 finally 具有所有相同的属性。

来自C# 4 specification 的第 8.13 节:

using 语句被翻译成三个部分:获取、使用和处置。资源的使用隐式包含在包含finally 子句的try 语句中。这个finally 子句处理资源。

【讨论】:

  • 根据您的常见情况,如果我们在 using 语句中有返回,它不会被处理?
猜你喜欢
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 2020-03-06
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多