c# - Entity Framework 6.1.3 ASP.Net 异步数据库调用比同步慢得多
问题描述
我正在测试数据库调用,Include
并注意到async
与同步代码相比,我的代码运行速度非常慢。鉴于同步代码几乎快五倍,我假设我做错了什么,但我无法发现它。在查看代码时,我似乎在等待ToListAsync()
哪个应该是正确的。我做错了什么还是这是正常行为?
注意:缩小示例以仅关注一个数据库调用,async
在示例中是不必要的,但无论如何都会存在时间差异。
异步:
[HttpGet]
[Route("{bsid}/{caseId}/async")]
public async Task<IHttpActionResult> GetAsync(string bsid, int caseId)
{
var db = new DbContext();
var deviations = await db.RenewalCycles.Where(x => x.Deviations.Any())
.Include(cycle => cycle.TPCase.CaseNames.Select(caseName => caseName.TPName))
.Include(cycle => cycle.TPCase.CaseNames.Select(caseName => caseName.TPNameType))
.Include(cycle => cycle.TPCase.GoodsAndServicesDescriptions)
.Include(cycle => cycle.TPCase.RelatedCases.Select(relatedCase => relatedCase.TPCaseRelation))
.Include(cycle => cycle.TPCase.RelatedCases.Select(relatedCase => relatedCase.TPCountry))
.ToListAsync();
return Ok();
}
同步:
[HttpGet]
[Route("{bsid}/{caseId}")]
public IHttpActionResult Get(string bsid, int caseId)
{
var db = new DbContext();
var deviations = db.RenewalCycles.Where(x => x.Deviations.Any())
.Include(cycle => cycle.TPCase.CaseNames.Select(caseName => caseName.TPName))
.Include(cycle => cycle.TPCase.CaseNames.Select(caseName => caseName.TPNameType))
.Include(cycle => cycle.TPCase.GoodsAndServicesDescriptions)
.Include(cycle => cycle.TPCase.RelatedCases.Select(relatedCase => relatedCase.TPCaseRelation))
.Include(cycle => cycle.TPCase.RelatedCases.Select(relatedCase => relatedCase.TPCountry))
.ToList();
return Ok();
}
解决方案
推荐阅读
- karate - 无法将接口文件中的 url 输入转换为功能文件
- javascript - 如何在 JavaScript 中的对象中打印两个数组列表
- javascript - 数据在不同组件中到达角度较晚
- php - wordpress phpMyAdmin 数据库集成最佳实践
- node.js - Socket.io + Nodejs + Angular2+ - 缺少 CORS 标头“Access-Control-Allow-Origin”
- php - php symfony 1 更新 generator.yml
- sql - SQL/Power BI 中的迭代构建列
- maven - 搜索 Nexus 中是否存在文件
- javascript - 如何设计一个优雅的 IP 检查 API 来支持 IPv4 和 IPv6
- php - 在 PHP 中将节点添加到 XML