作者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/cn.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