存储库中的异步GetMany方法

时间:2015-06-08 09:31:44

标签: c# asynchronous collections

我有根据过滤器

返回集合的存储库方法
public IEnumerable<T> GetMany(Expression<Func<T, bool>> filter = null)
    {
        IQueryable<T> query = DbSet;

        if (filter != null)
        {
            query = query.Where(filter);
        }

        return query.ToList();
    }

现在我想把这个方法写成Async。这是我的问题。 我应该将DbSet(DbSet<T>)的类型更改为其他内容或者什么是正确的解决方案?

protected readonly DbSet<T> DbSet;

    public Repository(AdminDbContext context)
    {
        this.Context = context;
        this.DbSet = context.Set<T>();
    }

UPD:return query.ToListAsync(); - 这够了吗?感谢

1 个答案:

答案 0 :(得分:1)

正如this MSDN article中所述,您仍然使用DbSet,但您使用异步扩展来访问该集。

这是您的代码的异步版本:

public Task<IEnumerable<T>> GetManyAsync(Expression<Func<T, bool>> filter = null)
{
    IQueryable<T> query = DbSet;

    if (filter != null)
    {
        query = query.Where(filter);
    }

    return query.ToListAsync();
}