diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs index 88684f9165..6c404a9149 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs @@ -604,6 +604,14 @@ namespace Umbraco.Core.Persistence.Repositories Sql sql, int pageIndex, int pageSize, out int totalRecords, Func, int[]> resolveIds) { + //If a max size is passed in, just do a normal get all! + if (pageSize == int.MaxValue) + { + var result = GetAll().ToArray(); + totalRecords = result.Count(); + return result; + } + var pagedResult = Database.Page(pageIndex + 1, pageSize, sql); totalRecords = Convert.ToInt32(pagedResult.TotalItems); diff --git a/src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs index 063891ded8..ccf946f9e2 100644 --- a/src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/RepositoryBase.cs @@ -133,6 +133,11 @@ namespace Umbraco.Core.Persistence.Repositories /// public IEnumerable GetAll(params TId[] ids) { + if (ids.Length > 2000) + { + throw new InvalidOperationException("Cannot perform a query with more than 2000 parameters"); + } + //ensure they are de-duplicated, easy win if people don't do this as this can cause many excess queries ids = ids.Distinct() //don't query by anything that is a default of T (like a zero)