From c76d09c9b06d53c0591afcdc5fac18fafdf22451 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 2 Sep 2014 12:21:29 +1000 Subject: [PATCH] fixes n+1 query when assigning user types to users in user repo --- .../Repositories/UserRepository.cs | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs index 667357d4bc..dc699009cf 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs @@ -370,21 +370,12 @@ namespace Umbraco.Core.Persistence.Repositories private IEnumerable ConvertFromDtos(IEnumerable dtos) { - var foundUserTypes = new Dictionary(); + var userTypeIds = dtos.Select(x => Convert.ToInt32(x.Type)).ToArray(); + var allUserTypes = _userTypeRepository.GetAll(userTypeIds); + return dtos.Select(dto => - { - //first we need to get the user type - IUserType userType; - if (foundUserTypes.ContainsKey(dto.Type)) - { - userType = foundUserTypes[dto.Type]; - } - else - { - userType = _userTypeRepository.Get(dto.Type); - //put it in the local cache - foundUserTypes.Add(dto.Type, userType); - } + { + var userType = allUserTypes.Single(x => x.Id == dto.Type); var userFactory = new UserFactory(userType); return userFactory.BuildEntity(dto);