Skip to content

Commit c9d5c7f

Browse files
Repositories: v13 UserService.GetAllInGroup fix (#20425)
* Fix: Used FetchByGroups to batch queries to stop SQL limit bug * Tidied up indentation. --------- Co-authored-by: Andy Butland <[email protected]>
1 parent 4c9d02e commit c9d5c7f

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserRepository.cs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -372,15 +372,17 @@ private void PerformGetReferencedDtos(List<UserDto> dtos)
372372

373373
List<int> userIds = dtos.Count == 1 ? new List<int> {dtos[0].Id} : dtos.Select(x => x.Id).ToList();
374374
Dictionary<int, UserDto>? xUsers = dtos.Count == 1 ? null : dtos.ToDictionary(x => x.Id, x => x);
375+
Sql<ISqlContext> sql;
375376

376377
// get users2groups
377378

378-
Sql<ISqlContext> sql = SqlContext.Sql()
379-
.Select<User2UserGroupDto>()
380-
.From<User2UserGroupDto>()
381-
.WhereIn<User2UserGroupDto>(x => x.UserId, userIds);
382-
383-
List<User2UserGroupDto>? user2Groups = Database.Fetch<User2UserGroupDto>(sql);
379+
var user2Groups = Database.FetchByGroups<User2UserGroupDto, int>(userIds, Constants.Sql.MaxParameterCount, ints =>
380+
{
381+
return SqlContext.Sql()
382+
.Select<User2UserGroupDto>()
383+
.From<User2UserGroupDto>()
384+
.WhereIn<User2UserGroupDto>(x => x.UserId, ints);
385+
}).ToList();
384386
var groupIds = user2Groups.Select(x => x.UserGroupId).ToList();
385387

386388
// get groups
@@ -422,12 +424,13 @@ private void PerformGetReferencedDtos(List<UserDto> dtos)
422424

423425
// get start nodes
424426

425-
sql = SqlContext.Sql()
426-
.Select<UserStartNodeDto>()
427-
.From<UserStartNodeDto>()
428-
.WhereIn<UserStartNodeDto>(x => x.UserId, userIds);
429-
430-
List<UserStartNodeDto>? startNodes = Database.Fetch<UserStartNodeDto>(sql);
427+
var startNodes = Database.FetchByGroups<UserStartNodeDto, int>(userIds, Constants.Sql.MaxParameterCount, ints =>
428+
{
429+
return SqlContext.Sql()
430+
.Select<UserStartNodeDto>()
431+
.From<UserStartNodeDto>()
432+
.WhereIn<UserStartNodeDto>(x => x.UserId, ints);
433+
}).ToList();
431434

432435
// get groups2languages
433436

0 commit comments

Comments
 (0)