我正在围绕EF Core DbSet
编写一个小型包装方法。我有以下方法:
public Task<IList<TEntity>> GetAsync(Func<IQueryable<TEntity>, IQueryable<TEntity>> getFunction)
{
if (getFunction == null)
{
Task.FromResult(new List<TEntity>());
}
return getFunction(_dbSet).AsNoTracking().ToListAsync();
}
该类是通用的,如您所见,_dbSet是上下文中具体DbSet
的实例。但是,这个问题无关紧要。
对于代码,我得到以下错误:
[CS0029]无法隐式转换类型 'System.Threading.Tasks.Task>' 至 'System.Threading.Tasks.Task>'
如果我将返回值更改为Task<List<TEntity>>
,则没有错误。
有谁知道为什么它不能转换它?谢谢!
答案 0 :(得分:3)
我认为最简单的方法是等待任务。因此,它将以最小的更改工作:
public async Task<IList<TEntity>> GetAsync(Func<IQueryable<TEntity>, IQueryable<TEntity>>
getFunction)
{
if (getFunction == null)
{
return new List<TEntity>();
}
return await getFunction(_dbSet).AsNoTracking().ToListAsync();
}