通用存储库 Get() IEnumerable 到异步
Generic repository Get() IEnumerable to Async
这是我第一次尝试异步 EF :)
我有一个通用的 entity framework 存储库,我想让它异步。
原代码为:
public virtual IEnumerable<TEntity> Get()
{
IQueryable<TEntity> query = dbSet;
return query.ToList();
}
我将其转换为:
public class GenericRepository<TEntity> where TEntity : class
{
internal Context context;
internal DbSet<TEntity> dbSet;
public GenericRepository(Context context)
{
this.context = context;
this.dbSet = context.Set<TEntity>();
}
public virtual Task<IEnumerable<TEntity>> Get()
{
IQueryable<TEntity> query = dbSet;
return query.ToListAsync();
}
}
但是,我有编译错误,无法将类型 System.threading.Tasks.Task> 转换为 return 类型 Tasks.Task>
ToListAsync() 方法检索列表,我期待一个任务>,我的原始 IEnumerable 结果正在别处使用来填充选择框
_xxx.Get().Select(x => new SelectListItem
{
Value = x.ps_id.ToString(),
Text = x.ps_label
}).OrderBy(x => x.Text);
你能指出我需要做什么才能正确地做到这一点吗
谢谢
Task<T>
是不变的,因为它是 class。 return 列表更有意义,因为无论如何你都要完成这样的工作。
public virtual Task<List<TEntity>> Get()
{
IQueryable<TEntity> query = dbSet;
return query.ToListAsync();
}
这是我第一次尝试异步 EF :)
我有一个通用的 entity framework 存储库,我想让它异步。
原代码为:
public virtual IEnumerable<TEntity> Get()
{
IQueryable<TEntity> query = dbSet;
return query.ToList();
}
我将其转换为:
public class GenericRepository<TEntity> where TEntity : class
{
internal Context context;
internal DbSet<TEntity> dbSet;
public GenericRepository(Context context)
{
this.context = context;
this.dbSet = context.Set<TEntity>();
}
public virtual Task<IEnumerable<TEntity>> Get()
{
IQueryable<TEntity> query = dbSet;
return query.ToListAsync();
}
}
但是,我有编译错误,无法将类型 System.threading.Tasks.Task> 转换为 return 类型 Tasks.Task>
ToListAsync() 方法检索列表,我期待一个任务>,我的原始 IEnumerable 结果正在别处使用来填充选择框
_xxx.Get().Select(x => new SelectListItem
{
Value = x.ps_id.ToString(),
Text = x.ps_label
}).OrderBy(x => x.Text);
你能指出我需要做什么才能正确地做到这一点吗
谢谢
Task<T>
是不变的,因为它是 class。 return 列表更有意义,因为无论如何你都要完成这样的工作。
public virtual Task<List<TEntity>> Get()
{
IQueryable<TEntity> query = dbSet;
return query.ToListAsync();
}