[問題] 關於物件導向及MVC的連線問題

看板C_Sharp (C#)作者 (阿風~~)時間11年前 (2013/09/26 22:31), 編輯推噓2(2013)
留言15則, 4人參與, 最新討論串1/1
各位大大,這個問題在我心裡一直困擾很久了,雖然也做過測式,但還是不太了解。 需求:從資料庫中,以英文名稱對應中文姓名,例:傳入jack 得到 大明。 做一個class 其中function來讓程式呼叫 狀況一: 不使用MVC的狀況下,在gridview中的,RowCreated的事件中, 呼叫這個class,假設有十列,若這樣對應的話,在class中就會產生十次連 線去做對應這件事? 狀況二: 用MVC的狀況下,在controller中,若以linq來做 例如: var c = from v in aaaa select {.chiname = getchiname(row("english"))} 請問這樣的寫法下,假設資料一樣十行,也會產生十次連線嗎? 問題,其實很想用一次連線去做這件事,但因為分散資料庫,所以無法做關連, linked server也遇到了sql版本不同,效能很慘的狀況,所以得分散,不知道 各位是怎麼解決這樣的事的,這樣若有十個人用,就會產生100次以上的連線, 很可怕。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.121.234

09/26 22:53, , 1F
答案是.... singleton module?最近書上看到給您作個參考
09/26 22:53, 1F

09/26 23:37, , 2F
可是假如第一個是jack,第二個是marry,還是得再連一次
09/26 23:37, 2F

09/27 00:38, , 3F
singleton也是個做法 其實就是將資料load到記憶體
09/27 00:38, 3F

09/27 00:39, , 4F
每次取用就不用回db抓 但要考慮資料大小 更新頻率
09/27 00:39, 4F

09/27 00:40, , 5F
資料量很大 或許可以考慮hashtable方式 沒取過的才去db取
09/27 00:40, 5F

09/27 08:03, , 6F
連線的部分,.net會用Pool的方式去管理,應該不太需要擔心
09/27 08:03, 6F

09/27 08:11, , 7F
效能的部分,則要看系統是怎麼回事...以你的情況而言,獨體
09/27 08:11, 7F

09/27 08:12, , 8F
要用快取機制你得確保資料庫只有你會更新,或是容許一定的
09/27 08:12, 8F

09/27 08:12, , 9F
誤差。
09/27 08:12, 9F

09/27 22:53, , 10F
L大給您請教 pooling機制 假設在 connetion string 已經
09/27 22:53, 10F

09/27 23:00, , 11F
預設pooling 那元po所擔心的連線數問題是不是就解了?
09/27 23:00, 11F

09/27 23:01, , 12F
因此在撰寫程式時 就不需擔心連線數問題.. 都交給poolin
09/27 23:01, 12F

09/28 12:00, , 13F
我是建議先這樣,Connection和DataContext保持用完即丟。
09/28 12:00, 13F

09/28 12:02, , 14F
原PO有多資料庫,會分別對應到不同的Pool,這的確會造成較
09/28 12:02, 14F

09/28 12:02, , 15F
大的負擔。
09/28 12:02, 15F
文章代碼(AID): #1IH4L4LS (C_Sharp)
文章代碼(AID): #1IH4L4LS (C_Sharp)