2013-09-01 33 views
0

我在我的MVC網站中使用實體框架,並使用using語句處理數據庫上下文。現在我的問題是如果我返回後關閉使用語句,數據庫上下文是否正確處理。例如:在MVC中使用語句處理數據庫上下文

public ActionResult SomeAction(){ 

     using (var DB = new DatabaseContext()){ 

     ....   

     return View();     
     } 
} 

我必須返回之前關閉using語句?或者它會以我使用它的方式妥善處置。

+1

這應該對你有所幫助:http://stackoverflow.com/questions/5381747/how-do-i-correctly-manage-the-disposing-of-a-datacontext – user2339071

+1

你有什麼好。 http://stackoverflow.com/questions/6356307/will-a-idisposable-be-disposed-if-the-using-block-returns和http://stackoverflow.com/questions/7254815/dispose-and-return-網絡價值 –

回答

1

我必須在返回之前關閉using語句嗎?或者它會以我使用它的方式妥善處置?

它將自動爲您處置。您可以參考this answer以獲取更多信息。將調用Dispose方法,但會執行using語句,除非它是突然的全過程終止。最常見的情況是:

  • return
  • 例外被塊
  • 到達塊自然

的端部基本上是一個內拋出(和未被捕獲)的塊內using聲明主要是一個try/finally區塊的語法糖 - 而finally具有所有相同的屬性。

C# 4 specification的第8.13節:

一個using語句stranslated分爲三個部分:獲取,使用和處置。資源的使用隱含在包含finally子句的try語句中。此finally子句配置資源。

+0

根據您的常見情況,如果我們在使用聲明中有回報,它將不會被處置? – Daniel

相關問題