2015-05-14 49 views
0

這是我第一次異步EF嘗試:)通用存儲庫中獲得()的IEnumerable到異步

我有一個通用的實體框架資源庫,我希望把它異步。

原始代碼是:

public virtual IEnumerable<TEntity> Get() 
{ 
    IQueryable<TEntity> query = dbSet; 
    return query.ToList(); 
} 

我trnsfor它:

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>返回類型任務.Task>

ToListAsync()方法檢索一個列表,並期待任務>,我的oringinal IEnumerable結果正在其他地方使用來填充選擇框

_xxx.Get().Select(x => new SelectListItem 
      { 
       Value = x.ps_id.ToString(), 
       Text = x.ps_label 
      }).OrderBy(x => x.Text); 

你能給我什麼需要做的工作做是正確

感謝

回答

1

Task<T>是不變的,因爲它是一個類。因爲無論如何你都要完成這個工作,所以返回一個列表更有意義。

public virtual Task<List<TEntity>> Get() 
{ 
    IQueryable<TEntity> query = dbSet; 
    return query.ToListAsync(); 
} 
+0

嗨,最後我做了這樣的事情,並轉換其他代碼以反映這種變化。謝謝鞋 – dtjmsy