2012-09-18 50 views
1

entity model複雜EF圖LINQ加入

所以,這是我的模型..漂亮和複雜。

我正在尋找一個用戶名,以獲得區域。如果我是用SQL來完成這項工作的,我會一直執行一些連接到Users表。你如何在LINQ查詢語法或方法鏈中做到這一點?

我可以通過其他方式做到這一點非常簡單,但之後我必須做大量額外的工作才能平滑生成的圖形,並且還需要撤回其中的所有實體。

如果我可以有選擇地包括AreasPermissions &權限,這將是肉汁..但在這一點上,我不介意附加查詢來獲取這些。

另一種選擇,我是用一個函數導入到存儲過程和其映射到一個區域的浮動..但是當我開始需要包括其他實體它使該選項不太優雅。我也想避免使用存儲過程只是使用存儲過程因爲它總是一個滑坡與家人..「使用一個存儲過程,其中之一就是」變塑造成「不爲任何使用EF(訪問表)」 。

​​

回答

4

我沒有測試這種方式,但我認爲它應該工作:

var result = 
    from user in _context.Users 
    where user.Id == userId 
    from teamUser in user.TeamUsers 
    from teamRole in teamUser.Team.TeamRoles 
    from roleAreaPermission in teamRole.Role.RoleAreaPermissions 
    select roleAreaPermission.AreaPermission.Area; 
+0

感謝大衛,只需稍加修改,似乎已經奏效很大。 我,如果有可能,以避免返回中介機構(包括用戶)仍然好奇,你怎麼可能與方法的語法做到這一點。 – JoeBrockhaus

+0

@JoeBrockhaus查詢只返回'select'語句中的內容,所以它只返回'Areas'。 –

+0

@JoeBrockhaus你可以寫使用方法的語法與'SelectMany'此查詢,但我認爲這會看起來很奇怪,這是更具可讀性。 –