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