我通過LINQ使用Include語句鏈然後在Where中檢索一組記錄。這些記錄存儲在一個表格中,Solicitud de AccionN表格(我將其傳遞給視圖),該表格還有另外三個相關的表格:Analisis Causal,Plan de Accion & Evaluacion Efectividad。無法讀取相關數據LINQ
Where語句要求用戶當前登錄的UserId(ResponsableId)。我要求所有具有UserId的Solicitud de Accion記錄負責。因爲UserId是一個表中的字段,所以我所要做的就是要求它。最重要的是,另外三個表 - Analisis Causal,Plan de Accion & Evaluacion Efectividad - 具有相同的字段UserId(ResponsableId)。
我現在的LINQ表達式爲:
var sacSolicitudAccion =
db.SacSolicitudAccion.Include(s => s.SacResponsables)
.Include(s => s.SacAnalisisCausal)
.Include(s => s.SacPlanesAccion)
.Include(s => s.SacEvalEfectividad)
.Where(s => s.SacResponsablesID == idUsuario);
現在真正的問題。我需要向每個Solicitud de Accion顯示當前用戶登錄的用戶對每個Solicitud de Accion負責,其中用戶負責Analisis因果關係,Plan de Accion或Evaluacion Efectividad。
我該怎麼做?
*重要:Solicitud德安信永具有與其他三個表這種關係:
- Solicitud德安信永有許多更新的時候通知因果和更新的時候通知因果有一個Solicitud德ACCION)和ResponsableId(用戶ID)是一個場在每個表格中,所有表格都是一樣的。
您如何知道在處理查詢結果時他沒有使用包含的信息?他沒有向查詢結果顯示他正在做什麼。另外,你的「Where」與OP的沒有什麼不同。EF如何處理關係的整個想法是,引用的集合只包含主鍵與給定項目匹配的項目。 – Servy
@Servy:我明確地說過「如果你的應用程序代碼沒有使用它並且上面的代碼被轉換爲SQL」。老實說,這個命名讓我失望了,而且我很難追蹤主鍵,我認爲在某種程度上涉及到非主要關係。 – Guvante
事實上,包含很重要,只是因爲我需要在視圖中顯示相關數據。雖然這個解決方案看起來不錯,當我瀏覽屬性(egsSacPlanesAccion。)它不顯示SacResponsablesID,它只顯示像count,concat,聚合等方法。 我在想如果有一種方法來聲明一個語句,然後「添加」更多行/記錄。那可能嗎?有沒有一種方法呢?我是否需要在我的模型或上下文類中額外添加一些內容,以便可以通過您建議的屬性進行導航? 感謝您的回答! –