我在我的MVC网站中使用实体框架,并且使用using语句处理我的数据库上下文。现在我的问题是如果我在返回后关闭使用语句,数据库上下文是否正确处理。例如:
public ActionResult SomeAction(){
using (var DB = new DatabaseContext()){
....
return View();
}
}
我必须在返回之前关闭using语句吗?或者它将以我使用它的方式正确处理。
答案 0 :(得分:1)
我必须在返回之前关闭using语句吗?或者它会以我使用它的方式妥善处理?
它将自动为您处理。您可以参考this answer以获取更多信息。但是Dispose
方法被调用,但using
语句被执行,除非它是一个突然的全进程终止。最常见的情况是:
return
基本上,using
语句主要是try
/ finally
块的语法糖,而finally
具有所有相同的属性。
来自C# 4 specification的第8.13节:
using
声明被分为三个部分:获取,使用和处置。资源的使用隐式包含在包含try
子句的finally
语句中。此finally
子句处理资源。