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