[問題] 獨體模式中的connection

作者: wind681201 (阿風~~)   2020-10-22 10:12:41
想請問一個問題,在資料庫連線時,我想讓整個網站都使用同一個connection,所以使用
了獨體模式,
但是卻會發生一個問題,就是使用DataReader時,會發生[已經開啟一個與這個 Command
相關的 DataReader,必須先將它關閉。],
請問各位前輩,通常使用connection的獨體模時,怎麼避免這個問題?還是說,
connection的獨體模式,只用在DataTable之類的地方呢?
因為我是使用Dapper,感覺Dapper是使用DataReader的。
作者: ssccg (23)   2020-10-22 10:57:00
只有一個connection,通常就是你要有個queue去控管一次只能一個人(thread)用,使用中就要等啊不過通常不會自己做這個,會用現有的connection pool機制只要一個connection就設定Max Pool Size=1就好
作者: wind681201 (阿風~~)   2020-10-22 11:34:00
可是,這樣有效能問題,是不是說,獨體模式,不適合這這樣子的方式呢?
作者: ssccg (23)   2020-10-22 11:40:00
有什麼效能問題? 要有效能問題也是因為你只要一個connection的這個決定,而不是達成一個connection正常運作的實作方式也許你想的是一個connection可以multiplex,但現況就不是connection同一時間只能給一個session用,不能共用跟你用什麼模式管理無關,connection要共用就要分時
作者: wind681201 (阿風~~)   2020-10-22 12:14:00
謝謝指教
作者: johnny4753 (Li)   2020-10-26 12:07:00
通常建議是一個 httprequest 一個connection,不會讓連線一直開著,會出現那代表你沒用using包起來或實作IDisposable
作者: testPtt (測試)   2020-10-26 19:17:00
應該有readasync方法吧

Links booklink

Contact Us: admin [ a t ] ucptt.com