0
我有4個表,UserCredential
,UserProfile
,UserRoles
和Role
LINQ的多對多關係加入
var user = (from uc in Db.UserCredentials
join up in Db.UserProfiles on uc.UserId equals up.UserId
join ur in Db.UserRoles on uc.UserId equals ur.UserId
select new {
Credetial = uc,
Profile = up,
Roles = Db.Roles.Where(r => r.RoleId == ur.RoleId)})
.FirstOrDefault();
UserRole
有UserId
和RoleId
,使用戶可以擁有多個角色。
上述代碼生成的查詢似乎效率不高。任何人都可以提出更好的代碼
EF會自動爲關係創建導航屬性,因此您不需要使用連接。 – 2014-11-09 05:26:09
您將EF和LINQ指示爲SQL。你在用哪個?每個生成的SQL可能會有很大的不同。發佈生成的SQL並指出您覺得效率低下的地方。無論如何,考慮把它看作一個對象圖,而不是用連接來設置,你可能會發現一個更好的選擇。 – 2014-11-10 01:30:47