From df416ccde4b5a7b5438cd3ab3643127cc2a3e416 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 2 Sep 2014 10:26:11 +1000 Subject: [PATCH] Fixes n+1 query on UserRepository.GetAll with id params --- .../Repositories/UserRepository.cs | 21 ++++++------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs index 67775cca54..585fb61bdf 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs @@ -60,26 +60,17 @@ namespace Umbraco.Core.Persistence.Repositories protected override IEnumerable PerformGetAll(params int[] ids) { - if (ids.Any()) - { - return PerformGetAllOnIds(ids); - } - var sql = GetBaseQuery(false); - return ConvertFromDtos(Database.Fetch(new UserSectionRelator().Map, sql)) - .ToArray(); // important so we don't iterate twice, if we don't do thsi we can end up with null vals in cache if we were caching. - } - - private IEnumerable PerformGetAllOnIds(params int[] ids) - { - if (ids.Any() == false) yield break; - foreach (var id in ids) + if (ids.Any()) { - yield return Get(id); + sql.Where("umbracoUser.id in (@ids)", new {ids = ids}); } + + return ConvertFromDtos(Database.Fetch(new UserSectionRelator().Map, sql)) + .ToArray(); // important so we don't iterate twice, if we don't do this we can end up with null values in cache if we were caching. } - + protected override IEnumerable PerformGetByQuery(IQuery query) { var sqlClause = GetBaseQuery(false);