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
参数的第二项。
以下代码给出了 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
参数的第二项。