2010-08-24 187 views
3

在數據庫中沒有定義外鍵。所以我建立了關聯。LINQ to SQL - 沒有外鍵

問題:似乎無法能夠引用角色表預期:

我能得到儘可能u.UserNamesInRole則無法使跳轉到角色表。

IEnumerable<fmwebapp1.Old_App_Code.TelerikUsersDataContext.User> userList = (from u in dbTelerik.Users 
where u.UsersInRoles.Role.Name = "admin" 
select u.UsersInRoles); 

alt text

回答

0

在許多一對多的關係,當我想從一個側面結果只,由值在另一邊過濾,我通常開始我的關係中的中間查詢:

爲了得到一個角色的用戶:

var users = from ur in context.UsersInRole 
      where ur.Role.Name == "admin" 
      select ur.User; 

要獲得用戶的角色:

var roles = from ur in context.UsersInRole 
      where ur.User.UserName == "Jon" 
      select ur.Role 
+0

這正是我正在尋找的..乾杯! – 2010-08-24 06:29:59

1
where u.UsersInRoles.Role.Name = "admin" 

這就是不正確的語法。您需要==

0

這將是最簡單的添加在你的數據庫的FK關係,並重新導入表。 EF將爲您完成所有工作。

如果這不可行,請嘗試將Role中的Association添加到User,然後將關聯集名稱設置爲UsersInRole。從設計人員中刪除UsersInRole實體。

您還可以比較兩個表格之間導入「正確的」FK關係生成的EDMX文件與EDMX中的相關內容,然後手動編輯XML以匹配。