2016-10-03 17 views
0

我有以下,我想在包括的陣列,以通過和具有實體框架負載的方法和表達陣列中傳遞的關聯:通用代碼不的DbContext發現不執行包括

public static async Task<T> FindAsync<T>(this GSCMContext context, Expression<Func<T, bool>> match, , params Expression<Func<T, object>>[] includes) where T : BaseEntity 
    { 
     var set = context.Set<T>(); 

     if(includes != null) 
     { 
      foreach (var include in includes) 
      { 
       set.Include(include); 
      } 
     } 
     return await set<T>().SingleOrDefaultAsync(match); 
    } 

的問題是這些協會並沒有像我跑這個代碼一樣加載:

context.Entities.Include(a => a.association).Find(id) 

我不知道爲什麼我的代碼不起作用。

回答

2

因爲你只是忽略了Include方法的結果。您應該修改您的方法以匹配下面的方法:

public static async Task<T> FindAsync<T>(this GSCMContext context, 
     Expression<Func<T, bool>> match, 
     params Expression<Func<T, object>>[] includes) 
     where T : BaseEntity 
{ 
    IQuerable<T> query = context.Set<T>(); 

    if(includes != null) 
    { 
     foreach (var include in includes) 
     { 
      // Include returns result 
      query = query.Include(include); 
     } 
    } 
    return await query.SingleOrDefaultAsync(match); 
}