2011-06-06 91 views
1

這可能是一個非常簡單的問題,但或多或​​少,我要求這樣我可以圍繞Data Access塊如何打開和關閉連接。使用企業庫5.0數據訪問問題

首先,我已經使用類似的企業庫約10年,並已轉回和實體之間來回等

無論如何,當我使用數據庫類的CreateDatabase()函數,確實這會立即打開連接到數據庫的連接,或者當我使用類似ExecuteReader的方式打電話時,它是否會打開連接?

它如何處理關閉連接?在DAL中使用它後,我是否必須明確地調用關閉連接?企業圖書館如何確保在完成讀取器等連接後關閉連接?

另外,什麼是打開和關閉連接的最佳做法如果CreateDatabase立即打開連接?請分享一小段代碼樣本?

回答

5

CreateDatabase()不打開到數據庫的連接。各個命令通常處理連接的打開和關閉(例如ExecuteNonQuery)。

當然總會有一個例外。對於ExecuteReader,立即關閉連接是沒有意義的。的ExecuteReader設置當DbDataReader佈置的關閉連接,這就是爲什麼你看到使用的ExecuteReader這種模式:

using (IDataReader reader = db.ExecuteReader(cmd)) 
{ 
    // Process results 
} 

當使用塊退出,DbDataReader佈置和連接被關閉。

Enterprise Library Developer's Guide也觸及了這個問題。

因此,總之,您通常不必處理連接管理。圖書館將這些工作抽象出來併爲你管理。

+0

謝謝。是的,我使用IDataReader的使用,但我只是驗證插入/更新等,因爲我正在編寫一個典型的存儲庫包裝,並希望確保我不寫入SQL連接池用完了! :) 再次感謝! +1上/ +答案! – Sean 2011-06-08 18:56:15