2010-06-30 99 views
1

我們正在使用.Net Entity Framework來完成我們的數據庫相關工作。我們的數據庫是Sybase SQL Anywhere實體框架數據庫連接問題

using (AndeDBEntities db = new AndeDBEntities(decryptConnStr())) 
{ 

} 

我們使用大量的上述語句來訪問數據庫。我的問題是,我們是否需要在訪問完成後每次關閉連接以及如何操作?

有一次我看到「數據庫服務器連接限制超出」錯誤。我想知道我們的數據庫連接代碼中一定有什麼問題。

回答

2

連接應該自動關閉。 Sybase EF支持類中可能存在資源泄漏。

有關更多信息,請參閱Managing Connections。請注意(默認情況下)EF將爲每個查詢或SaveChanges調用打開並處理數據庫連接。如果Sybase的支持類不能很好地處理這個問題(例如,使用連接池),那麼資源泄漏可能會變得很明顯,否則就不會。

所以實際上using聲明不會關閉EF連接(除非您手動打開它)。在到達using聲明的結尾之前,它應該已經處理(釋放到連接池或關閉)。

1

不,您正在將AndeDBEntities對象封裝在using塊中,意思是當其超出範圍(因爲它實現IDisposable)時將調用其方法Dispose()。這種方法將清除對象所獲得的所有非託管資源(假設它已經被開發出來而沒有泄漏 - 我認爲這是一個公平的推定)。

我不相信這是您的連接限制錯誤的路線。你有開發者版嗎?這僅適用於3個連接。

1

使用語句將確保數據庫將被丟棄並關閉連接。

Grz,Kris。