diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs index d0c226ace2..e9a4652512 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs @@ -94,13 +94,7 @@ namespace Umbraco.Core.Persistence.Repositories return ProcessQuery(sql); } - #endregion - - #region Static Queries - - private readonly IQuery _publishedQuery = Query.Builder.Where(x => x.Published == true); - - #endregion + #endregion #region Overrides of PetaPocoRepositoryBase diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs index 6223e5933b..a4c6d354c1 100644 --- a/src/Umbraco.Core/Services/ContentService.cs +++ b/src/Umbraco.Core/Services/ContentService.cs @@ -58,7 +58,7 @@ namespace Umbraco.Core.Services #region Static Queries - private readonly IQuery _notTrashedQuery = Query.Builder.Where(x => x.Trashed == false); + private IQuery _notTrashedQuery; #endregion @@ -793,6 +793,12 @@ namespace Umbraco.Core.Services /// internal IEnumerable GetAllPublished() { + //create it once if it is needed (no need for locking here) + if (_notTrashedQuery == null) + { + _notTrashedQuery = Query.Builder.Where(x => x.Trashed == false); + } + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { return repository.GetByPublishedVersion(_notTrashedQuery); diff --git a/src/Umbraco.Core/Services/EntityService.cs b/src/Umbraco.Core/Services/EntityService.cs index a6b84704fc..b56c1fbed2 100644 --- a/src/Umbraco.Core/Services/EntityService.cs +++ b/src/Umbraco.Core/Services/EntityService.cs @@ -64,7 +64,7 @@ namespace Umbraco.Core.Services #region Static Queries - private readonly IQuery _rootEntityQuery = Query.Builder.Where(x => x.ParentId == -1); + private IQuery _rootEntityQuery; #endregion @@ -392,6 +392,12 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public virtual IEnumerable GetRootEntities(UmbracoObjectTypes umbracoObjectType) { + //create it once if it is needed (no need for locking here) + if (_rootEntityQuery == null) + { + _rootEntityQuery = Query.Builder.Where(x => x.ParentId == -1); + } + var objectTypeId = umbracoObjectType.GetGuid(); using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) {