看板 C_Sharp 關於我們 聯絡資訊
想請問一個問題,在資料庫連線時,我想讓整個網站都使用同一個connection,所以使用 了獨體模式, 但是卻會發生一個問題,就是使用DataReader時,會發生[已經開啟一個與這個 Command 相關的 DataReader,必須先將它關閉。], 請問各位前輩,通常使用connection的獨體模時,怎麼避免這個問題?還是說, connection的獨體模式,只用在DataTable之類的地方呢? 因為我是使用Dapper,感覺Dapper是使用DataReader的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.183.247.253 (泰國) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1603332765.A.360.html
ssccg: 只有一個connection,通常就是你要有個queue去控管一次只能 10/22 10:57
ssccg: 一個人(thread)用,使用中就要等啊 10/22 10:58
ssccg: 不過通常不會自己做這個,會用現有的connection pool機制 10/22 11:00
ssccg: 只要一個connection就設定Max Pool Size=1就好 10/22 11:04
wind681201: 可是,這樣有效能問題,是不是說,獨體模式,不適合這 10/22 11:34
wind681201: 這樣子的方式呢? 10/22 11:34
ssccg: 有什麼效能問題? 要有效能問題也是因為你只要一個connectio 10/22 11:40
ssccg: n的這個決定,而不是達成一個connection正常運作的實作方式 10/22 11:40
ssccg: 也許你想的是一個connection可以multiplex,但現況就不是 10/22 11:42
ssccg: connection同一時間只能給一個session用,不能共用 10/22 11:43
ssccg: 跟你用什麼模式管理無關,connection要共用就要分時 10/22 11:44
wind681201: 謝謝指教 10/22 12:14
johnny4753: 通常建議是一個 httprequest 一個connection,不會讓 10/26 12:07
johnny4753: 連線一直開著,會出現那代表你沒用using包起來或實作 10/26 12:07
johnny4753: IDisposable 10/26 12:07
testPtt: 應該有readasync方法吧 10/26 19:17