[問題] asp.net MVC

看板Web_Design作者 (大魯蛇)時間9年前 (2014/09/11 11:16), 9年前編輯推噓1(1022)
留言23則, 4人參與, 最新討論串1/1
最近在看MVC 如果model層使用Entity framework 那要如何開一個連接但對資料庫做兩次查詢呢 看了一下msdn的範例 感覺好像是一個select 就會對資料庫連接關閉一次 可以給點方向嗎? -- 我覺得IE11是世界上最強的瀏覽器了 沙歌火估▁▁▁▁ 其他的應該廢除 發劇狐狗 ██ - □–□ 如果各位有興趣的話,可以現在開始下載 只要Google下載Internet Explorer   ψBigLoser 因為我們只會支援精英瀏覽器,絕對不會接受垃圾 ψdohProject /◣– /█◣ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.104.106 ※ 文章網址: http://www.ptt.cc/bbs/Web_Design/M.1410405378.A.B82.html

09/11 12:55, , 1F
用Entity framework就不要去管connection什麼時候開關的
09/11 12:55, 1F

09/11 13:02, , 2F
而且基本上底層的Data Provider都有做connection pool
09/11 13:02, 2F

09/11 13:02, , 3F
連接字串沒變的話不用去想什麼開關問題
09/11 13:02, 3F
為什麼不用去想呢..你的意思是他會幫我妥善處理? 使用不同的model也只會開關一次,是這樣嗎? 因為我寫的系統很雜,所以一個功能開5~6次不同table, 做不同處理是很平常的,我很怕她會我用一個他就開關一次, 這樣效率會非常非常差

09/11 15:28, , 4F
就去測試跟驗證
09/11 15:28, 4F

09/11 15:28, , 5F
沒有數據是沒辦法認定效率非常差的
09/11 15:28, 5F

09/11 15:29, , 6F
舉個例子,像以前大家都認為 Java 還是動態語言在解決某種
09/11 15:29, 6F

09/11 15:29, , 7F
問題的時候效率非常差,而且都拿C語言比較
09/11 15:29, 7F

09/11 15:29, , 8F
事實上在某種狀況下比C/C++還快
09/11 15:29, 8F

09/11 15:31, , 9F
請不要用自己的思考去先入為主,建議多做實際測試
09/11 15:31, 9F

09/11 15:31, , 10F
像Javascript v8的RegExp就比C跟golang的RegExp庫還快很多
09/11 15:31, 10F

09/11 15:32, , 11F
這沒測試過還真不曉得說,原來技術進步這麼快
09/11 15:32, 11F
你可能誤會我的意思了,舉個例子來說我要兩個table1和table2的資料 那我會 連線.open(); table1.取得資料(); table2.取得資料(); 連線.close(); 這是比較直覺得作法對吧? 你應該不會希望是下面這種, 連線.open(); table1.取得資料(); 連線.close(); 連線.open(); table2.取得資料(); 連線.close(); 我並不是在說EF效率差,而是我想了解一下他運作情況是怎樣的, 1F給的解釋,可以理解為不會有這個問題,不過我想在清楚一點了解 謝謝

09/11 16:24, , 13F
在同樣的connection string下,conn.Open()是從pool取連線
09/11 16:24, 13F

09/11 16:24, , 14F
conn.Close()是把連線放回pool,不是真的開關
09/11 16:24, 14F

09/11 16:25, , 15F
只有pool沒有已開啟且可使用的連線時才會開新的
09/11 16:25, 15F

09/11 16:27, , 16F
你寫段程式去試 new SqlConnection, open, close 很多次就
09/11 16:27, 16F

09/11 16:31, , 17F
知道了,第一次很長,後面再開關幾乎不花時間
09/11 16:31, 17F
非常感謝!!!!


09/11 16:51, , 19F
如果你有別的理由要控制connection開關,要EF6
09/11 16:51, 19F
現在這樣應該就行了,早上在公司測了一下,自己寫的connection,不是用EF 迴圈一萬次抓同一筆資料,要1X秒(內網)這樣應該沒甚麼問題..

09/13 22:54, , 20F
EF在selct基本上是沒問題的,比較麻煩是update&insert
09/13 22:54, 20F
可是上面的版友說他不是真的斷開連結,還是說只有select沒斷開? update和 insert是有段開的? 這樣就麻煩了.. ※ 編輯: BigLoser (113.61.164.195), 09/14/2014 14:30:37

09/27 13:09, , 21F
你可以用Dependency Injection
09/27 13:09, 21F

09/27 13:10, , 22F
nuget上有很多 injection/IoC 容器去幫你管理生命週期
09/27 13:10, 22F

09/27 13:11, , 23F
DbContext 通常會跟http request 同生共死
09/27 13:11, 23F
文章代碼(AID): #1K4HG2k2 (Web_Design)