Dot-Net

為什麼 Dapper dot net 不打開和關閉連接本身?

  • September 27, 2012

Dapper 隱含地期望連接在使用時打開。為什麼它不能自己打開和關閉?這不是簡單的連接管理嗎?

我問是因為我和一位同事一直在反复討論連接池在幕後發生的事情的性質,以及在多個命令之間保持連接打開或打開和關閉它是否有任何好處對於每個命令。

Dapper 現在(並且在相當長的一段時間內)在內部處理這個問題。它只是工作™


原始(過時)答案:

你沒有錯。我沒有註意到這種不便的原因是,由於遺留原因(特別是:我們曾經專門使用 LINQ-to-SQL),我們的主要類似連接的東西是DataContext- 所以我們將 dapper 方法重新公開為擴展方法DataContext.

愚蠢的是:這些方法的作用是:

using(db.Connection.EnsureOpen()) {
   db.Connection.{the dapper method}
}

這裡 EnsureOpen 是一個厚顏無恥的方法:

  • 如果連接打開,則返回 null
  • 否則,它打開連接,並返回一個 IDisposable 令牌,完成後關閉連接

所以:我們顯然完全感受到了你的痛苦,但我們更進一步地實施了它。

請將此記錄為功能請求。我們擁有所有程式碼(儘管我需要稍微調整一下以適應非緩衝數據的“閱讀器”)——dapper 絕對沒有理由不能擁有它。

引用自:https://stackoverflow.com/questions/12628983