我在使用asp.net EF5.0时,发现通过EF执行一个耗时查询时,其它查询会被阻塞,直到耗时查询结束,后面的查询才会被执行。我是本地测试,只有一个用户在线都出现这样的情况。
我是同时开了两个web页面,先查耗时的,再查不耗时的。
耗时查询大概耗时60秒,后面的查询只查某表前10条,应该几乎不费时空。
为什么会这样,是不是EF要设置什么Option之类的?
是Session限制锁了。
查询是不会阻塞的吧.你用了同一个上下文,或者你的查询锁住了表
两个查询之间不存在锁的问题的
是同一个 DbContext 实例吗?
不是。看来好像不是数据库阻塞,可能没找对问题。调试了下,好像不是数据库阻塞,像是ASP.NET阻塞。
如果是网页死锁,有什么办法可以看到呀?现在第二个页面一查询,走完Page_Load事件,它就不走了。只有第一个页面的查询完成后,它才走btnSearch_Click事件。
ADO.NET是这样的, Datareader没有关闭之前,不能查询第二个的。
如果他们使用同一个Connection的话。你需要多线程的话,就得用不同的DBContext,这样也就是不同的Connection了。
用的是不同的Connection,现像像是数据库问题,我写了调试代码,发现可能不一定是数据库阻塞引起,我正在想办法调试,怕是asp.net死锁。