作者BigLoser (大魯蛇)
看板Web_Design
標題[問題] asp.net MVC
時間Thu Sep 11 11:16:16 2014
最近在看MVC
如果model層使用Entity framework
那要如何開一個連接但對資料庫做兩次查詢呢
看了一下msdn的範例
感覺好像是一個select 就會對資料庫連接關閉一次
可以給點方向嗎?
--
我覺得
IE11是世界上最強的瀏覽器了
沙歌火估
I ◥▁▁▁▁ ◢ 麥
其他的應該廢除
發劇狐狗
E ◤
██ /-
科
裡 狸
□–□◢◤ 舒
如果各位有興趣的話,可以現在開始下載
▼ㄑ ◢ 服
只要Google下載
Internet Explorer ψBigLoser ▼ㄧ /◣ 特
因為我們只會支援
精英瀏覽器,絕對不會接受
垃圾 ψdohProject ◢ /◣– ◤ /█◣
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.104.106
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Web_Design/M.1410405378.A.B82.html
1F:→ ssccg: 用Entity framework就不要去管connection什麼時候開關的 09/11 12:55
2F:→ ssccg: 而且基本上底層的Data Provider都有做connection pool 09/11 13:02
3F:→ ssccg: 連接字串沒變的話不用去想什麼開關問題 09/11 13:02
為什麼不用去想呢..你的意思是他會幫我妥善處理?
使用不同的model也只會開關一次,是這樣嗎?
因為我寫的系統很雜,所以一個功能開5~6次不同table,
做不同處理是很平常的,我很怕她會我用一個他就開關一次,
這樣效率會非常非常差
4F:→ alog: 就去測試跟驗證 09/11 15:28
5F:→ alog: 沒有數據是沒辦法認定效率非常差的 09/11 15:28
6F:→ alog: 舉個例子,像以前大家都認為 Java 還是動態語言在解決某種 09/11 15:29
7F:→ alog: 問題的時候效率非常差,而且都拿C語言比較 09/11 15:29
8F:→ alog: 事實上在某種狀況下比C/C++還快 09/11 15:29
9F:→ alog: 請不要用自己的思考去先入為主,建議多做實際測試 09/11 15:31
10F:→ alog: 像Javascript v8的RegExp就比C跟golang的RegExp庫還快很多 09/11 15:31
11F:→ alog: 這沒測試過還真不曉得說,原來技術進步這麼快 09/11 15:32
你可能誤會我的意思了,舉個例子來說我要兩個table1和table2的資料
那我會
連線.open();
table1.取得資料();
table2.取得資料();
連線.close();
這是比較直覺得作法對吧?
你應該不會希望是下面這種,
連線.open();
table1.取得資料();
連線.close();
連線.open();
table2.取得資料();
連線.close();
我並不是在說EF效率差,而是我想了解一下他運作情況是怎樣的,
1F給的解釋,可以理解為不會有這個問題,不過我想在清楚一點了解 謝謝
13F:→ ssccg: 在同樣的connection string下,conn.Open()是從pool取連線 09/11 16:24
14F:→ ssccg: conn.Close()是把連線放回pool,不是真的開關 09/11 16:24
15F:→ ssccg: 只有pool沒有已開啟且可使用的連線時才會開新的 09/11 16:25
16F:→ ssccg: 你寫段程式去試 new SqlConnection, open, close 很多次就 09/11 16:27
17F:→ ssccg: 知道了,第一次很長,後面再開關幾乎不花時間 09/11 16:31
非常感謝!!!!
19F:→ ssccg: 如果你有別的理由要控制connection開關,要EF6 09/11 16:51
現在這樣應該就行了,早上在公司測了一下,自己寫的connection,不是用EF
迴圈一萬次抓同一筆資料,要1X秒(內網)這樣應該沒甚麼問題..
20F:推 chatnoir: EF在selct基本上是沒問題的,比較麻煩是update&insert 09/13 22:54
可是上面的版友說他不是真的斷開連結,還是說只有select沒斷開?
update和 insert是有段開的? 這樣就麻煩了..
※ 編輯: BigLoser (113.61.164.195), 09/14/2014 14:30:37
21F:→ winsummer: 你可以用Dependency Injection 09/27 13:09
22F:→ winsummer: nuget上有很多 injection/IoC 容器去幫你管理生命週期 09/27 13:10
23F:→ winsummer: DbContext 通常會跟http request 同生共死 09/27 13:11