使用MVC中的using语句处理数据库上下文

时间:2013-09-01 09:10:23

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

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

 public ActionResult SomeAction(){

      using (var DB = new DatabaseContext()){

       ....           

       return View();                
      }
 }

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

1 个答案:

答案 0 :(得分:1)

  

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

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

  • 块内的return
  • 块内抛出(并未捕获)异常
  • 自然地到达街区尽头

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

来自C# 4 specification的第8.13节:

  

using声明被分为三个部分:获取,使用和处置。资源的使用隐式包含在包含try子句的finally语句中。此finally子句处理资源。