1

Basicall我有三個表用戶角色和USerRoles與多對多關係和部門表。所以,當我在.edmx上導入這些時,我只能得到兩個實體。所以我在這兩個實體都有導航屬性。我有三個用戶和兩個角色(admin和ReadOnly)。 。下面是我的SQL查詢Entity Diagram對應的SQL查詢的LINQ查詢

select U.UserName,r.RoleName,dp.DepName 
from Users U 
inner join UserRoles UR on U.UseID = UR.UserId 
inner join Roles r on UR.RoleId = r.RoleID 
inner join dbo.Department Dp on dp.DepId = U.DepId 
group by r.RoleName,U.UserName,Dp.DepName 

這是我的LINQ查詢我想我能夠獲得depName但不ROLENAME特定用戶。 其實在用戶角色和UerRoles之間有很多關係。在我的上下文中,我沒有UserRoles Entity.Please在這方面幫助我。

List<User> user = db.Users.Include("Department,Roles").ToList(); 
foreach (var U in user) 
{ 
    Console.WriteLine(U.UseID + " " + U.UserName +" "+ U.Department.DepName+ " "+ U.Roles.);    
} 

回答

1

至於你有很多一對多的關係,你需要遍歷每個用戶的每個角色:

foreach (var u in users) 
{ 
    foreach (var r on u.Roles) 
    { 
     Comsole.WriteLine("User {0} has role {1}, u.UserName, r.RoleName); 
    } 
} 
+0

感謝嗨但我仍無法得到來自角色集合的角色名稱。 –

+0

@MutturajBali:你得到了什麼錯誤? – abatishchev

+0

沒有錯誤,但我無法訪問RoleName。因爲我要爲每個用戶打印DepName ...具有角色角色的AutoGenerated用戶實體屬性public TrackableCollection 角色我是否需要將Property設爲虛擬 –

0

你必須做1包括每個表。您的查詢應該是這樣的

List<User> users = db.Users.Include("Department").Include("Roles").ToList();