2013-08-23 244 views
0

請指教,我已閱讀的所有資源,書籍,視頻教程沒有任何我認爲是簡單的常見場景。LINQ To Entities Multiselect

-----什麼是通過橋接表與鏈接到實體-----查詢的最有效和最標準的方式

我想要的查詢使用LINQ到Entities.I是我的理解是LinqToSQL已被棄用,即使非正式..

我有一個標準 一對多(橋臺) 和原始表 表橋多對一決賽桌 和最後一個特定的密鑰如果有幫助的話,那麼這個用戶桌上就會有一對一的用戶角色

表: 用戶,(而不是在查詢我有一個特定的KeyID此表的where子句),

角色, & RolePermission,(橋無論你怎麼稱呼它/地圖,它有FK的角色&權限) [不幸的是它有其他cols或這不會如此緊張。 I.E.它不是 在實體框架中抽象出其實際存在], &權限。

摘要我希望每個用戶的每個角色的權限,用戶ID可以說5 我有一個每個用戶的角色列表(開始)我打算提供此查詢角色ID並多次調用它, ,,追加其結果列表4EA角色ID這確實不是很理想 理想的做法是利用用戶ID &角色ID在單個查詢...

How do you do Multiple Inner Joins in Linq to Entities

上面這個鏈接聲稱,你可以拉他要求所有表格都沒有特別加入PK-FK領域?!?!?!說什麼 ??!

這只是Peuedo代碼鄉親,我輸入了幾十個在嘗試這種情況下

參數p_RoleId ---這種潛在的版本可以讓角色ID的每個用戶ID中的理想

List<Permissions> listToReturn = new List<Permissions>(); 

var result=(from p in context.Permissions 
      from rp in m.RolePermissions 
      where m.roleID = p_RoleId    
listToReturn result.ToList(); 

我通過真的只是想知道如何正確地將這些表鉤在一起並指定一些where子句。 兩個表的例子隨處可見。但是有四個當你有一個橋接表,我發現沒有什麼

+0

是的,這可能會做得很好 – ChristianProgrammer

回答

1

試試這個

var result = (from p in context.Permissions 
         join px in m.RolePermissions on p.roleID equals px.roleID 
         select p); 
+0

爲什麼我得到-2倒投票已?? – ChristianProgrammer

+0

@ChristianProgrammer沒有任何意義,有時候他們會拒絕,因爲那是他們的習慣。所以不要介意/關心太多。 –

+0

感謝這些人幫助 – ChristianProgrammer

0

這是你想要的嗎?

var result=(from p in context.Permissions 
      join rp in m.RolePermissions on p.RoleId equals rp.RoleId 
      select p) 
+0

認爲這是什麼亨利Tshobo建議上面...我現在好,現在每個人都非常感謝 – ChristianProgrammer

1

那麼你絕對可以做你在僞代碼中寫的東西。畢竟你所做的是暗示的加入。但它可能不是很有效。

你基本上是做一個

select <something> from Permissions , RolePermissions where permissions.id = permissionsRoles.id; 

而你並不需要一個外鍵。但在你的情況下,你有很多很多

//with the assumption that you have a 
//navigation property between roles and rolepermissions in your model 
var result = connection.Permissions 
          .Where(i => i.Id == RolePermissionsid)that 
          .SelectMany(i => i.RolePermissions).ToList(); 
+0

這是什麼流浪'那裏'那裏? – ErikE