0

以下代码提供了 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);
  }

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

重现步骤

调用 GetAsync(model.Id, cancelToken) 以接收至少一个数据。数据库表只包含一个应该返回的行。

更多技术细节

EF Core 版本:3.0 数据库提供者:Pomelo.EntityFrameworkCore.MySql 目标框架:.Net Core 3.0 操作系统:Mac OS IDE:Rider

4

1 回答 1

1

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

在您的情况下,cancellationToken被解释为params object[] keyValues参数的第二项。

于 2019-10-07T09:22:21.323 回答