首页 新闻 会员 周边 捐助

EF并发阻塞问题?

0
悬赏园豆:10 [已解决问题] 解决于 2014-04-14 18:51

我在使用asp.net EF5.0时,发现通过EF执行一个耗时查询时,其它查询会被阻塞,直到耗时查询结束,后面的查询才会被执行。我是本地测试,只有一个用户在线都出现这样的情况。

我是同时开了两个web页面,先查耗时的,再查不耗时的。

耗时查询大概耗时60秒,后面的查询只查某表前10条,应该几乎不费时空。

为什么会这样,是不是EF要设置什么Option之类的?

空明流光的主页 空明流光 | 初学一级 | 园豆:111
提问于:2014-04-14 09:52
< >
分享
最佳答案
0

是Session限制锁了。

空明流光 | 初学一级 |园豆:111 | 2014-04-14 18:50
其他回答(3)
0

查询是不会阻塞的吧.你用了同一个上下文,或者你的查询锁住了表

收获园豆:3
吴瑞祥 | 园豆:29449 (高人七级) | 2014-04-14 09:58

两个查询之间不存在锁的问题的

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2014-04-14 09:59
0

是同一个 DbContext 实例吗?

收获园豆:4
Launcher | 园豆:45050 (高人七级) | 2014-04-14 10:19

不是。看来好像不是数据库阻塞,可能没找对问题。调试了下,好像不是数据库阻塞,像是ASP.NET阻塞。

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2014-04-14 10:33

如果是网页死锁,有什么办法可以看到呀?现在第二个页面一查询,走完Page_Load事件,它就不走了。只有第一个页面的查询完成后,它才走btnSearch_Click事件。

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2014-04-14 10:37
0

ADO.NET是这样的, Datareader没有关闭之前,不能查询第二个的。

如果他们使用同一个Connection的话。你需要多线程的话,就得用不同的DBContext,这样也就是不同的Connection了。

收获园豆:3
爱编程的大叔 | 园豆:30844 (高人七级) | 2014-04-14 10:38

用的是不同的Connection,现像像是数据库问题,我写了调试代码,发现可能不一定是数据库阻塞引起,我正在想办法调试,怕是asp.net死锁。

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2014-04-14 10:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册