【问题标题】:ToListAsync with DevArt dotConnect seems to be executing synchronously?与 DevArt dotConnect 的 ToListAsync 似乎正在同步执行?
【发布时间】:2015-07-30 01:22:36
【问题描述】:

我的代码使用 devArt 的 dotConnect 连接到 Oracle 数据库。基本上是这样的:

using (var context = new MyContext(myConnectionString)
{
    var data = (some lync query).ToListAsync();
    var data2 = (some lync query).ToListAsync();

    etc etc....

    await Task.WhenAll(new Task[] {data, data2....});
}

基本上我会异步执行 6 或 7 个 lync 查询,并等待它们全部结束后再继续。但是,当我单步执行代码时,我看到的是 ToListAsync 似乎正在同步运行。执行不会在一两秒钟内移至下一行(这些是大查询)。如果我只是在 Task.Whenall 中放置一个断点,VS 会等待 10 秒左右,然后我才会遇到该断点,并且所有任务都已完成。此外,在研究这一点时,我发现 DBContext 不是线程安全的,因此在同一上下文中执行多个异步调用应该会引发异常。

那么这里发生了什么?有人在 devArt 库中看到过这个吗?他们自己的支持论坛没有帮助。

【问题讨论】:

  • 查询真的可以在同一个连接中并行化吗?

标签: async-await entity-framework-6 devart


【解决方案1】:

如果其他人看到这个或有同样的问题,我从 DevArt 确认他们不支持异步并且异步 IQueryable 扩展方法同步执行。

http://forums.devart.com/viewtopic.php?f=30&t=32197

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多