LINQ 查询对象列表,其中包含多个对象列表
LINQ query list of objects with multiple list of objects in it
我有以下table关系
User
-List<Role> on User.RoleId = Id
-RoleDetail on Role.RoleDetailId = Id
-Practice on Role.PracticeId = Id
虽然我确实在 EF 中链接了所有这些实体,但当我使用 dbConext Include 查询 User 时,我只能访问 Roles,RoleDetail 和 Practice 不可访问,这是可以理解的。有什么方法可以更改我查询用户的方式以包含这些信息?
如果没有,我应该如何有效地加入这些table?我不希望针对每个用户的多个角色进行 foreach 循环,而是针对单个查询请求。任何 help/hint 表示赞赏。
查询具有角色的用户
users = _dbcontext.Users.Include(u => u.Roles)
加入
var userQuery = _userRepository.GetUser(searchTerm);
var roleQuery = _roleRepository.GetRole();
var test = from user in userQuery join role in roleQuery on user.Roles....
您需要在角色上使用两个 Include
来获取所有数据,如下所示:
users = _dbcontext.Users.Include(u => u.Roles).ThenInclude(x=>x.RoleDetail)
.Include(u => u.Roles).ThenInclude(x=>x.Practice)
.AsSplitQuery(); //highly recommend if you are using .Net >=5
我有以下table关系
User
-List<Role> on User.RoleId = Id
-RoleDetail on Role.RoleDetailId = Id
-Practice on Role.PracticeId = Id
虽然我确实在 EF 中链接了所有这些实体,但当我使用 dbConext Include 查询 User 时,我只能访问 Roles,RoleDetail 和 Practice 不可访问,这是可以理解的。有什么方法可以更改我查询用户的方式以包含这些信息?
如果没有,我应该如何有效地加入这些table?我不希望针对每个用户的多个角色进行 foreach 循环,而是针对单个查询请求。任何 help/hint 表示赞赏。
查询具有角色的用户
users = _dbcontext.Users.Include(u => u.Roles)
加入
var userQuery = _userRepository.GetUser(searchTerm);
var roleQuery = _roleRepository.GetRole();
var test = from user in userQuery join role in roleQuery on user.Roles....
您需要在角色上使用两个 Include
来获取所有数据,如下所示:
users = _dbcontext.Users.Include(u => u.Roles).ThenInclude(x=>x.RoleDetail)
.Include(u => u.Roles).ThenInclude(x=>x.Practice)
.AsSplitQuery(); //highly recommend if you are using .Net >=5