Async-Db-Requests 中的双重条目

Double Entries in Async-Db-Requests

以下代码给出了 2 个条目,但至少需要一个。

 /// <inheritdoc />
  public async Task<T> GetAsync<T>(Guid id, CancellationToken cancellationToken)
     where T : class
  {
     var entity = await Set<T>().FindAsync(new[] { id }, cancellationToken);

     return entity ?? throw new NotFoundException(typeof(T).Name, id);
  }

给定的实体用 "single" 签名,因此只允许一个实体从数据库中取回。

重现步骤

调用GetAsync(model.Id, cancellationToken) 接收至少一个数据。 数据库 Table 仅包含一行,应将其返回。

更多技术细节

EF 核心版本:3.0 数据库提供商:Pomelo.EntityFrameworkCore.MySql 目标框架:.Net Core 3.0 操作系统:Mac OS IDE:骑手

您需要使用DbSet.FindAsync(...)方法。

在您的例子中,cancellationToken 被解释为 params object[] keyValues 参数的第二项。