2011-08-22 39 views
0

我有一個通用的倉庫模式和基於FkApplicationId我試圖加載機構的集合,如果它IsEnabled == trueWhere子句中相關實體

我的模型看起來是這樣的: enter image description here

我認爲這將是容易的,但我不能創建一個where子句來篩選結果。我看不到AppAgencies的屬性來編寫一個條件,這是據我可以得到:

public IEnumerable<Agency> GetAllEnabledAgencies(int applicationId) 
{ 
    return _agencyRepository.GetMany(m => m.AppAgencies.//No Entity Properties are here); 
} 

從我的倉庫基地從上面叫:

public virtual IEnumerable<T> GetMany(Expression<Func<T, bool>> where) 
{ 
    return _dbSet.Where(where).ToList(); 
} 

謝謝RPM1984,解決方案:

機構由多個應用程序使用,他們需要啓用/禁用每個應用程序每個人的能力。所以我正在使用AppAgency表將這個req捆綁在一起。因爲我不想有每一個新的應用程序引入時間將新列添加到Agency實體。

​​

回答

4

有沒有實體屬性,因爲AppAgencies財產上Agency是導航性能。

認爲這是你想要什麼:

public IEnumerable<Agency> GetAllEnabledAgencies(int applicationId) 
{ 
    return _agencyRepository.GetMany(x => x.AppAgencies.Any(y => y.IsEnabled)); 
} 

英文:

獲取所有機構,其中啓用至少一個 AppAgency。

如果你想:

獲取所有機構,其中所有 AppAgency啓用。

變化Any變爲All

HTH。

+0

嗯這就是真正貼近我需要什麼。我用更多的信息更新了我的問題。無論哪種方式,你已經幫助了我很大。 – MisterIsaak

+0

@Jisaak - NPS。真的不明白你想要什麼,雖然查詢,不知道爲什麼你想在FkAkencyId篩選的應用程序ID。難道你不應該過濾原子能機構PK本身嗎? (例如AgencyId) – RPM1984

+1

哇,我認爲每天工作到很晚對我產生了很大的影響(這就是我的故事,我堅持)。我的意思是將它與'FkApplicationId'進行比較。我改變了where語句,它的工作原理非常完美。再次感謝!真的幫助我。謝謝! – MisterIsaak