From 9619066a50d1d8019817418efda3cdbccbbd9998 Mon Sep 17 00:00:00 2001 From: Stephan Date: Tue, 11 Jul 2017 16:29:44 +0200 Subject: [PATCH] Persistence - cleanup --- .../Persistence/IDatabaseContext.cs | 11 ++++ .../Repositories/EntityRepository.cs | 2 +- .../Interfaces/IQueryRepository.cs | 10 --- .../Repositories/NPocoRepositoryBase.cs | 10 ++- .../Repositories/NotificationsRepository.cs | 2 +- .../Repositories/VersionableRepositoryBase.cs | 8 +-- .../Persistence/UmbracoDatabase.cs | 6 -- .../UnitOfWork/IDatabaseUnitOfWork.cs | 27 -------- .../UnitOfWork/IDatabaseUnitOfWorkProvider.cs | 14 ----- .../UnitOfWork/IScopeUnitOfWork.cs | 30 ++++++++- .../UnitOfWork/IScopeUnitOfWorkProvider.cs | 34 +++++----- .../UnitOfWork/IUnitOfWorkProvider.cs | 14 ----- .../Persistence/UnitOfWork/ScopeUnitOfWork.cs | 18 +++--- .../UnitOfWork/ScopeUnitOfWorkProvider.cs | 14 +---- src/Umbraco.Core/Services/AuditService.cs | 10 +-- src/Umbraco.Core/Services/ContentService.cs | 56 ++++++++--------- ...peServiceBaseOfTRepositoryTItemTService.cs | 12 ++-- src/Umbraco.Core/Services/DataTypeService.cs | 6 +- .../Services/ExternalLoginService.cs | 4 +- src/Umbraco.Core/Services/FileService.cs | 2 +- .../Services/LocalizationService.cs | 4 +- src/Umbraco.Core/Services/MacroService.cs | 2 +- src/Umbraco.Core/Services/MediaService.cs | 34 +++++----- src/Umbraco.Core/Services/MemberService.cs | 62 +++++++++---------- .../Services/MigrationEntryService.cs | 2 +- src/Umbraco.Core/Services/PackagingService.cs | 2 +- src/Umbraco.Core/Services/RelationService.cs | 32 +++++----- src/Umbraco.Core/Services/TaskService.cs | 2 +- src/Umbraco.Core/Services/UserService.cs | 18 +++--- src/Umbraco.Core/Umbraco.Core.csproj | 3 - .../DataTypeDefinitionRepositoryTest.cs | 6 +- .../Repositories/DictionaryRepositoryTest.cs | 2 +- .../Repositories/TemplateRepositoryTest.cs | 2 +- .../NuCache/DataSource/Database.cs | 16 ++--- .../PublishedCache/NuCache/FacadeService.cs | 24 +++---- .../XmlPublishedCache/XmlStore.cs | 14 ++--- src/Umbraco.Web/Services/SectionService.cs | 2 +- 37 files changed, 241 insertions(+), 276 deletions(-) delete mode 100644 src/Umbraco.Core/Persistence/UnitOfWork/IDatabaseUnitOfWork.cs delete mode 100644 src/Umbraco.Core/Persistence/UnitOfWork/IDatabaseUnitOfWorkProvider.cs delete mode 100644 src/Umbraco.Core/Persistence/UnitOfWork/IUnitOfWorkProvider.cs diff --git a/src/Umbraco.Core/Persistence/IDatabaseContext.cs b/src/Umbraco.Core/Persistence/IDatabaseContext.cs index ec56d4d849..bd77ca54c5 100644 --- a/src/Umbraco.Core/Persistence/IDatabaseContext.cs +++ b/src/Umbraco.Core/Persistence/IDatabaseContext.cs @@ -4,6 +4,17 @@ using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence { + // the main implementation of IDatabaseContext is IUmbracoDatabaseFactory + // it is registered as a singleton and can be injected + // + // then for convenience, + // fixme - IScopeProvider exposes .DatabaseContext + // fixme - IScope : IDatabaseContext + // IUnitOfWorkProvider exposes .DatabaseContext + // IScopeUnitOfWork : IDatabaseContext + // IMigrationContext : IDatabaseContext + // NPocoRepositoryBase : IDatabaseContext + public interface IDatabaseContext { /// diff --git a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs index 3502db182a..063bc45370 100644 --- a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs @@ -29,7 +29,7 @@ namespace Umbraco.Core.Persistence.Repositories /// /// Gets the repository's unit of work. /// - protected internal IDatabaseUnitOfWork UnitOfWork { get; } + protected internal IScopeUnitOfWork UnitOfWork { get; } #region Query Methods diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IQueryRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IQueryRepository.cs index 246b6dd489..155c32297e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IQueryRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IQueryRepository.cs @@ -7,16 +7,6 @@ namespace Umbraco.Core.Persistence.Repositories public interface IQueryRepository : IRepository { - /// - /// Creates a new query. - /// - IQuery QueryT { get; } - - /// - /// Creates a new query. - /// - IQuery Query(); - /// /// Gets all entities of the specified type and query /// diff --git a/src/Umbraco.Core/Persistence/Repositories/NPocoRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/NPocoRepositoryBase.cs index 7b9be2a3c9..895c9a6858 100644 --- a/src/Umbraco.Core/Persistence/Repositories/NPocoRepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/NPocoRepositoryBase.cs @@ -15,7 +15,7 @@ namespace Umbraco.Core.Persistence.Repositories /// /// /// - internal abstract class NPocoRepositoryBase : RepositoryBase + internal abstract class NPocoRepositoryBase : RepositoryBase, IDatabaseContext where TEntity : class, IAggregateRoot { /// @@ -52,7 +52,13 @@ namespace Umbraco.Core.Persistence.Repositories /// Creates a new Sql statement. /// /// A new Sql statement. - protected Sql Sql() => UnitOfWork.Sql(); + public Sql Sql() => UnitOfWork.Sql(); + + /// + /// Creates a new Sql statement. + /// + /// A new Sql statement. + public Sql Sql(string sql, params object[] args) => UnitOfWork.Sql(sql, args); #region Abstract Methods diff --git a/src/Umbraco.Core/Persistence/Repositories/NotificationsRepository.cs b/src/Umbraco.Core/Persistence/Repositories/NotificationsRepository.cs index e64187e36f..16b0ba47e4 100644 --- a/src/Umbraco.Core/Persistence/Repositories/NotificationsRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/NotificationsRepository.cs @@ -13,7 +13,7 @@ namespace Umbraco.Core.Persistence.Repositories { public class NotificationsRepository : DisposableObject, INotificationsRepository { - private readonly IDatabaseUnitOfWork _unitOfWork; + private readonly IScopeUnitOfWork _unitOfWork; public NotificationsRepository(IScopeUnitOfWork unitOfWork) { diff --git a/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs index 09d2e0df81..04104c4e02 100644 --- a/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs @@ -898,26 +898,26 @@ ORDER BY contentNodeId, versionId, propertytypeid public class UnitOfWorkEntityEventArgs : EventArgs { - public UnitOfWorkEntityEventArgs(IDatabaseUnitOfWork unitOfWork, TEntity entity) + public UnitOfWorkEntityEventArgs(IScopeUnitOfWork unitOfWork, TEntity entity) { UnitOfWork = unitOfWork; Entity = entity; } - public IDatabaseUnitOfWork UnitOfWork { get; } + public IScopeUnitOfWork UnitOfWork { get; } public TEntity Entity { get; } } public class UnitOfWorkVersionEventArgs : EventArgs { - public UnitOfWorkVersionEventArgs(IDatabaseUnitOfWork unitOfWork, int entityId, Guid versionId) + public UnitOfWorkVersionEventArgs(IScopeUnitOfWork unitOfWork, int entityId, Guid versionId) { UnitOfWork = unitOfWork; EntityId = entityId; VersionId = versionId; } - public IDatabaseUnitOfWork UnitOfWork { get; } + public IScopeUnitOfWork UnitOfWork { get; } public int EntityId { get; } public Guid VersionId { get; } } diff --git a/src/Umbraco.Core/Persistence/UmbracoDatabase.cs b/src/Umbraco.Core/Persistence/UmbracoDatabase.cs index a7021bdd57..fecae2ef59 100644 --- a/src/Umbraco.Core/Persistence/UmbracoDatabase.cs +++ b/src/Umbraco.Core/Persistence/UmbracoDatabase.cs @@ -73,12 +73,6 @@ namespace Umbraco.Core.Persistence /// public ISqlSyntaxProvider SqlSyntax => SqlContext.SqlSyntax; - public Sql Sql() => new Sql(SqlContext); - - public Sql Sql(string sql, params object[] args) => Sql().Append(sql, args); - - public IQuery Query() => new Query(SqlContext); - #region Testing, Debugging and Troubleshooting private bool _enableCount; diff --git a/src/Umbraco.Core/Persistence/UnitOfWork/IDatabaseUnitOfWork.cs b/src/Umbraco.Core/Persistence/UnitOfWork/IDatabaseUnitOfWork.cs deleted file mode 100644 index ecffdd7abd..0000000000 --- a/src/Umbraco.Core/Persistence/UnitOfWork/IDatabaseUnitOfWork.cs +++ /dev/null @@ -1,27 +0,0 @@ -using NPoco; - -namespace Umbraco.Core.Persistence.UnitOfWork -{ - /// - /// Represents a persistence unit of work for working with a database. - /// - public interface IDatabaseUnitOfWork : IUnitOfWork, IDatabaseContext - { - /// - /// Gets the database. - /// - IUmbracoDatabase Database { get; } - - /// - /// Read-locks some lock objects. - /// - /// The lock object identifiers. - void ReadLock(params int[] lockIds); - - /// - /// Write-locks some lock objects. - /// - /// The lock object identifiers. - void WriteLock(params int[] lockIds); - } -} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/UnitOfWork/IDatabaseUnitOfWorkProvider.cs b/src/Umbraco.Core/Persistence/UnitOfWork/IDatabaseUnitOfWorkProvider.cs deleted file mode 100644 index 2c1a261faa..0000000000 --- a/src/Umbraco.Core/Persistence/UnitOfWork/IDatabaseUnitOfWorkProvider.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Umbraco.Core.Persistence.UnitOfWork -{ - /// - /// Represents a provider that can create units of work to work on databases. - /// - public interface IDatabaseUnitOfWorkProvider - { - /// - /// Creates a unit of work. - /// - /// A new unit of work. - IDatabaseUnitOfWork CreateUnitOfWork(); - } -} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/UnitOfWork/IScopeUnitOfWork.cs b/src/Umbraco.Core/Persistence/UnitOfWork/IScopeUnitOfWork.cs index e5232092c5..afe79b38b0 100644 --- a/src/Umbraco.Core/Persistence/UnitOfWork/IScopeUnitOfWork.cs +++ b/src/Umbraco.Core/Persistence/UnitOfWork/IScopeUnitOfWork.cs @@ -3,10 +3,38 @@ using Umbraco.Core.Scoping; namespace Umbraco.Core.Persistence.UnitOfWork { - public interface IScopeUnitOfWork : IDatabaseUnitOfWork + public interface IScopeUnitOfWork : IUnitOfWork, IDatabaseContext { + /// + /// Gets the scope. + /// IScope Scope { get; } + + /// + /// Gets the event messages. + /// EventMessages Messages { get; } + + /// + /// Gets the events dispatcher. + /// IEventDispatcher Events { get; } + + /// + /// Gets the database. + /// + IUmbracoDatabase Database { get; } + + /// + /// Read-locks some lock objects. + /// + /// The lock object identifiers. + void ReadLock(params int[] lockIds); + + /// + /// Write-locks some lock objects. + /// + /// The lock object identifiers. + void WriteLock(params int[] lockIds); } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/UnitOfWork/IScopeUnitOfWorkProvider.cs b/src/Umbraco.Core/Persistence/UnitOfWork/IScopeUnitOfWorkProvider.cs index c6771eb355..0dc76c4833 100644 --- a/src/Umbraco.Core/Persistence/UnitOfWork/IScopeUnitOfWorkProvider.cs +++ b/src/Umbraco.Core/Persistence/UnitOfWork/IScopeUnitOfWorkProvider.cs @@ -6,23 +6,29 @@ namespace Umbraco.Core.Persistence.UnitOfWork /// /// Provides scoped units of work. /// - public interface IScopeUnitOfWorkProvider : IDatabaseUnitOfWorkProvider + public interface IScopeUnitOfWorkProvider { - // gets the scope provider + /// + /// Gets the scope provider. + /// IScopeProvider ScopeProvider { get; } - // creates a unit of work - // redefine the method to indicate it returns an IScopeUnitOfWork and - // not anymore only an IDatabaseUnitOfWork as IDatabaseUnitOfWorkProvider does - // fixme - merge IScope... and IDatabase... - new IScopeUnitOfWork CreateUnitOfWork(); - - // creates a unit of work - // support specifying an isolation level - // support auto-commit - but beware! it will be committed, whatever happens - IScopeUnitOfWork CreateUnitOfWork(IsolationLevel isolationLevel = IsolationLevel.Unspecified, bool readOnly = false, bool immediate = false); - - // fixme explain + /// + /// Gets the database context. + /// IDatabaseContext DatabaseContext { get; } + + /// + /// Creates a unit of work. + /// + /// An optional isolation level. + /// A value indicating whether the unit of work is read-only. + /// A value indicating whether the unit of work is immediate. + /// A new unit of work. + /// + /// A read-only unit of work does not need to be completed, and should not be used to write. + /// An immediate unit of work does not queue operations but executes them immediately. + /// + IScopeUnitOfWork CreateUnitOfWork(IsolationLevel isolationLevel = IsolationLevel.Unspecified, bool readOnly = false, bool immediate = false); } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/UnitOfWork/IUnitOfWorkProvider.cs b/src/Umbraco.Core/Persistence/UnitOfWork/IUnitOfWorkProvider.cs deleted file mode 100644 index 5e3f3c2881..0000000000 --- a/src/Umbraco.Core/Persistence/UnitOfWork/IUnitOfWorkProvider.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Umbraco.Core.Persistence.UnitOfWork -{ - /// - /// Represents a provider that can create units of work. - /// - public interface IUnitOfWorkProvider - { - /// - /// Creates a unit of work. - /// - /// A new unit of work. - IUnitOfWork CreateUnitOfWork(); - } -} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/UnitOfWork/ScopeUnitOfWork.cs b/src/Umbraco.Core/Persistence/UnitOfWork/ScopeUnitOfWork.cs index a20865e77d..302eb75b99 100644 --- a/src/Umbraco.Core/Persistence/UnitOfWork/ScopeUnitOfWork.cs +++ b/src/Umbraco.Core/Persistence/UnitOfWork/ScopeUnitOfWork.cs @@ -15,6 +15,7 @@ namespace Umbraco.Core.Persistence.UnitOfWork { private readonly IsolationLevel _isolationLevel; private readonly IScopeProvider _scopeProvider; + private readonly IDatabaseContext _databaseContext; private bool _completeScope; private IScope _scope; private Guid _key; @@ -28,6 +29,7 @@ namespace Umbraco.Core.Persistence.UnitOfWork /// Creates a new unit of work instance /// /// + /// /// /// /// @@ -35,10 +37,11 @@ namespace Umbraco.Core.Persistence.UnitOfWork /// /// This should normally not be used directly and should be created with the UnitOfWorkProvider /// - internal ScopeUnitOfWork(IScopeProvider scopeProvider, RepositoryFactory repositoryFactory, IsolationLevel isolationLevel = IsolationLevel.Unspecified, bool readOnly = false, bool immediate = false) + internal ScopeUnitOfWork(IScopeProvider scopeProvider, IDatabaseContext databaseContext, RepositoryFactory repositoryFactory, IsolationLevel isolationLevel = IsolationLevel.Unspecified, bool readOnly = false, bool immediate = false) : base(repositoryFactory, readOnly, immediate) { _scopeProvider = scopeProvider; + _databaseContext = databaseContext; _isolationLevel = isolationLevel; // fixme only 1! @@ -53,20 +56,17 @@ namespace Umbraco.Core.Persistence.UnitOfWork #region IDatabaseContext - // fixme - stop using the actual Database here - it forces the creation of the DB - // should have a reference to a IDatabaseContext to use instead! + /// + public ISqlSyntaxProvider SqlSyntax => _databaseContext.SqlSyntax; /// - public ISqlSyntaxProvider SqlSyntax => Database.SqlSyntax; + public Sql Sql() => _databaseContext.Sql(); /// - public Sql Sql() => new Sql(Database.SqlContext); + public Sql Sql(string sql, params object[] args) => _databaseContext.Sql(sql, args); /// - public Sql Sql(string sql, params object[] args) => new Sql(Database.SqlContext, sql, args); - - /// - public IQuery Query() => new Query(Database.SqlContext); + public IQuery Query() => _databaseContext.Query(); #endregion diff --git a/src/Umbraco.Core/Persistence/UnitOfWork/ScopeUnitOfWorkProvider.cs b/src/Umbraco.Core/Persistence/UnitOfWork/ScopeUnitOfWorkProvider.cs index a1c5efe72c..9ea1907f86 100644 --- a/src/Umbraco.Core/Persistence/UnitOfWork/ScopeUnitOfWorkProvider.cs +++ b/src/Umbraco.Core/Persistence/UnitOfWork/ScopeUnitOfWorkProvider.cs @@ -24,22 +24,10 @@ namespace Umbraco.Core.Persistence.UnitOfWork /// public IDatabaseContext DatabaseContext { get; } - // explicit implementation - IDatabaseUnitOfWork IDatabaseUnitOfWorkProvider.CreateUnitOfWork() - { - return new ScopeUnitOfWork(ScopeProvider, _repositoryFactory); - } - - /// - public virtual IScopeUnitOfWork CreateUnitOfWork() - { - return new ScopeUnitOfWork(ScopeProvider, _repositoryFactory); - } - /// public IScopeUnitOfWork CreateUnitOfWork(IsolationLevel isolationLevel = IsolationLevel.Unspecified, bool readOnly = false, bool immediate = false) { - return new ScopeUnitOfWork(ScopeProvider, _repositoryFactory, isolationLevel, readOnly, immediate); + return new ScopeUnitOfWork(ScopeProvider, DatabaseContext, _repositoryFactory, isolationLevel, readOnly, immediate); } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Services/AuditService.cs b/src/Umbraco.Core/Services/AuditService.cs index 081767680e..c95d25e9c4 100644 --- a/src/Umbraco.Core/Services/AuditService.cs +++ b/src/Umbraco.Core/Services/AuditService.cs @@ -29,7 +29,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork()) { var repo = uow.CreateRepository(); - var result = repo.GetByQuery(repo.QueryT.Where(x => x.Id == objectId)); + var result = repo.GetByQuery(uow.Query().Where(x => x.Id == objectId)); uow.Complete(); return result; } @@ -41,8 +41,8 @@ namespace Umbraco.Core.Services { var repo = uow.CreateRepository(); var result = sinceDate.HasValue == false - ? repo.GetByQuery(repo.QueryT.Where(x => x.UserId == userId && x.AuditType == type)) - : repo.GetByQuery(repo.QueryT.Where(x => x.UserId == userId && x.AuditType == type && x.CreateDate >= sinceDate.Value)); + ? repo.GetByQuery(uow.Query().Where(x => x.UserId == userId && x.AuditType == type)) + : repo.GetByQuery(uow.Query().Where(x => x.UserId == userId && x.AuditType == type && x.CreateDate >= sinceDate.Value)); uow.Complete(); return result; } @@ -54,8 +54,8 @@ namespace Umbraco.Core.Services { var repo = uow.CreateRepository(); var result = sinceDate.HasValue == false - ? repo.GetByQuery(repo.QueryT.Where(x => x.AuditType == type)) - : repo.GetByQuery(repo.QueryT.Where(x => x.AuditType == type && x.CreateDate >= sinceDate.Value)); + ? repo.GetByQuery(uow.Query().Where(x => x.AuditType == type)) + : repo.GetByQuery(uow.Query().Where(x => x.AuditType == type && x.CreateDate >= sinceDate.Value)); uow.Complete(); return result; } diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs index 84b0957992..d3a7527314 100644 --- a/src/Umbraco.Core/Services/ContentService.cs +++ b/src/Umbraco.Core/Services/ContentService.cs @@ -390,7 +390,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Key == key); + var query = uow.Query().Where(x => x.Key == key); return repository.GetByQuery(query).SingleOrDefault(); } } @@ -406,7 +406,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ContentTypeId == id); + var query = uow.Query().Where(x => x.ContentTypeId == id); return repository.GetByQuery(query); } } @@ -417,7 +417,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ContentTypeId == id); + var query = uow.Query().Where(x => x.ContentTypeId == id); return repository.GetByPublishedVersion(query); } } @@ -434,7 +434,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Level == level && x.Trashed == false); + var query = uow.Query().Where(x => x.Level == level && x.Trashed == false); return repository.GetByQuery(query); } } @@ -531,7 +531,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == id); + var query = uow.Query().Where(x => x.ParentId == id); return repository.GetByQuery(query).OrderBy(x => x.SortOrder); } } @@ -547,7 +547,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == id && x.Published); + var query = uow.Query().Where(x => x.ParentId == id && x.Published); return repository.GetByQuery(query).OrderBy(x => x.SortOrder); } } @@ -572,7 +572,7 @@ namespace Umbraco.Core.Services var repository = uow.CreateRepository(); var filterQuery = filter.IsNullOrWhiteSpace() ? null - : repository.QueryT.Where(x => x.Name.Contains(filter)); + : uow.Query().Where(x => x.Name.Contains(filter)); // fixme nesting uow?! return GetPagedChildren(id, pageIndex, pageSize, out totalChildren, orderBy, orderDirection, true, filterQuery); } @@ -601,7 +601,7 @@ namespace Umbraco.Core.Services uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - var query = repository.QueryT; + var query = uow.Query(); //if the id is System Root, then just get all - NO! does not make sense! //if (id != Constants.System.Root) query.Where(x => x.ParentId == id); @@ -628,7 +628,7 @@ namespace Umbraco.Core.Services var repository = uow.CreateRepository(); var filterQuery = filter.IsNullOrWhiteSpace() ? null - : repository.QueryT.Where(x => x.Name.Contains(filter)); + : uow.Query().Where(x => x.Name.Contains(filter)); // fixme nesting uow? return GetPagedDescendants(id, pageIndex, pageSize, out totalChildren, orderBy, orderDirection, true, filterQuery); } @@ -656,7 +656,7 @@ namespace Umbraco.Core.Services uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - var query = repository.QueryT; + var query = uow.Query(); //if the id is System Root, then just get all if (id != Constants.System.Root) query.Where(x => x.Path.SqlContains($",{id},", TextColumnType.NVarchar)); @@ -676,7 +676,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == parentId && x.Name.Contains(name)); + var query = uow.Query().Where(x => x.ParentId == parentId && x.Name.Contains(name)); return repository.GetByQuery(query); } } @@ -699,7 +699,7 @@ namespace Umbraco.Core.Services return Enumerable.Empty(); } var pathMatch = content.Path + ","; - var query = repository.QueryT.Where(x => x.Id != content.Id && x.Path.StartsWith(pathMatch)); + var query = uow.Query().Where(x => x.Id != content.Id && x.Path.StartsWith(pathMatch)); return repository.GetByQuery(query); } } @@ -716,7 +716,7 @@ namespace Umbraco.Core.Services uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); var pathMatch = content.Path + ","; - var query = repository.QueryT.Where(x => x.Id != content.Id && x.Path.StartsWith(pathMatch)); + var query = uow.Query().Where(x => x.Id != content.Id && x.Path.StartsWith(pathMatch)); return repository.GetByQuery(query); } } @@ -780,7 +780,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == Constants.System.Root); + var query = uow.Query().Where(x => x.ParentId == Constants.System.Root); return repository.GetByQuery(query); } } @@ -812,10 +812,10 @@ namespace Umbraco.Core.Services } } - private IEnumerable GetContentForExpiration(IDatabaseUnitOfWork uow) + private IEnumerable GetContentForExpiration(IScopeUnitOfWork uow) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Published && x.ExpireDate <= DateTime.Now); + var query = uow.Query().Where(x => x.Published && x.ExpireDate <= DateTime.Now); return repository.GetByQuery(query); } @@ -832,10 +832,10 @@ namespace Umbraco.Core.Services } } - private IEnumerable GetContentForRelease(IDatabaseUnitOfWork uow) + private IEnumerable GetContentForRelease(IScopeUnitOfWork uow) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Published == false && x.ReleaseDate <= DateTime.Now); + var query = uow.Query().Where(x => x.Published == false && x.ReleaseDate <= DateTime.Now); return repository.GetByQuery(query); } @@ -850,7 +850,7 @@ namespace Umbraco.Core.Services uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); var bin = $"{Constants.System.Root},{Constants.System.RecycleBinContent},"; - var query = repository.QueryT.Where(x => x.Path.StartsWith(bin)); + var query = uow.Query().Where(x => x.Path.StartsWith(bin)); return repository.GetByQuery(query); } } @@ -876,7 +876,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Published && x.Id == id && x.Trashed == false); + var query = uow.Query().Where(x => x.Published && x.Id == id && x.Trashed == false); var count = repository.Count(query); return count > 0; } @@ -1597,7 +1597,7 @@ namespace Umbraco.Core.Services } // emptying the recycle bin means deleting whetever is in there - do it properly! - var query = repository.QueryT.Where(x => x.ParentId == Constants.System.RecycleBinContent); + var query = uow.Query().Where(x => x.ParentId == Constants.System.RecycleBinContent); var contents = repository.GetByQuery(query).ToArray(); foreach (var content in contents) { @@ -1885,14 +1885,14 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - return GetPublishedDescendantsLocked(repository, content).ToArray(); // ToArray important in uow! + return GetPublishedDescendantsLocked(uow, repository, content).ToArray(); // ToArray important in uow! } } - internal IEnumerable GetPublishedDescendantsLocked(IContentRepository repository, IContent content) + internal IEnumerable GetPublishedDescendantsLocked(IScopeUnitOfWork uow, IContentRepository repository, IContent content) { var pathMatch = content.Path + ","; - var query = repository.QueryT.Where(x => x.Id != content.Id && x.Path.StartsWith(pathMatch) /*&& x.Trashed == false*/); + var query = uow.Query().Where(x => x.Id != content.Id && x.Path.StartsWith(pathMatch) /*&& x.Trashed == false*/); var contents = repository.GetByPublishedVersion(query); // beware! contents contains all published version below content @@ -2084,7 +2084,7 @@ namespace Umbraco.Core.Services { if (HasChildren(content.Id)) { - var descendants = GetPublishedDescendantsLocked(repository, content).ToArray(); + var descendants = GetPublishedDescendantsLocked(uow, repository, content).ToArray(); uow.Events.Dispatch(Published, this, new PublishEventArgs(descendants, false, false), "Published"); } changeType = TreeChangeTypes.RefreshBranch; // whole branch @@ -2515,7 +2515,7 @@ namespace Umbraco.Core.Services uow.WriteLock(Constants.Locks.ContentTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.WhereIn(x => x.ContentTypeId, contentTypeIdsA); + var query = uow.Query().WhereIn(x => x.ContentTypeId, contentTypeIdsA); var contents = repository.GetByQuery(query).ToArray(); if (uow.Events.DispatchCancelable(Deleting, this, new DeleteEventArgs(contents))) @@ -2536,7 +2536,7 @@ namespace Umbraco.Core.Services // if current content has children, move them to trash var c = content; - var childQuery = repository.QueryT.Where(x => x.ParentId == c.Id); + var childQuery = uow.Query().Where(x => x.ParentId == c.Id); var children = repository.GetByQuery(childQuery); foreach (var child in children) { @@ -2583,7 +2583,7 @@ namespace Umbraco.Core.Services uow.ReadLock(Constants.Locks.ContentTypes); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Alias == contentTypeAlias); + var query = uow.Query().Where(x => x.Alias == contentTypeAlias); var contentType = repository.GetByQuery(query).FirstOrDefault(); if (contentType == null) diff --git a/src/Umbraco.Core/Services/ContentTypeServiceBaseOfTRepositoryTItemTService.cs b/src/Umbraco.Core/Services/ContentTypeServiceBaseOfTRepositoryTItemTService.cs index 88b4e5e2eb..9e3a141432 100644 --- a/src/Umbraco.Core/Services/ContentTypeServiceBaseOfTRepositoryTItemTService.cs +++ b/src/Umbraco.Core/Services/ContentTypeServiceBaseOfTRepositoryTItemTService.cs @@ -248,7 +248,7 @@ namespace Umbraco.Core.Services { var repo = uow.CreateRepository(); uow.ReadLock(ReadLockIds); - var query = repo.QueryT.Where(x => x.ParentId == id); + var query = uow.Query().Where(x => x.ParentId == id); return repo.GetByQuery(query); } } @@ -261,7 +261,7 @@ namespace Umbraco.Core.Services uow.ReadLock(ReadLockIds); var found = Get(id); if (found == null) return Enumerable.Empty(); - var query = repo.QueryT.Where(x => x.ParentId == found.Id); + var query = uow.Query().Where(x => x.ParentId == found.Id); return repo.GetByQuery(query); } } @@ -272,7 +272,7 @@ namespace Umbraco.Core.Services { var repo = uow.CreateRepository(); uow.ReadLock(ReadLockIds); - var query = repo.QueryT.Where(x => x.ParentId == id); + var query = uow.Query().Where(x => x.ParentId == id); var count = repo.Count(query); return count > 0; } @@ -286,7 +286,7 @@ namespace Umbraco.Core.Services uow.ReadLock(ReadLockIds); var found = Get(id); if (found == null) return false; - var query = repo.QueryT.Where(x => x.ParentId == found.Id); + var query = uow.Query().Where(x => x.ParentId == found.Id); var count = repo.Count(query); return count > 0; } @@ -322,7 +322,7 @@ namespace Umbraco.Core.Services while (ids.Count > 0) { var i = ids.Pop(); - var query = repo.QueryT.Where(x => x.ParentId == i); + var query = uow.Query().Where(x => x.ParentId == i); var result = repo.GetByQuery(query).ToArray(); foreach (var c in result) @@ -373,7 +373,7 @@ namespace Umbraco.Core.Services { var repo = uow.CreateRepository(); uow.ReadLock(ReadLockIds); - return repo.Count(repo.QueryT); + return repo.Count(uow.Query()); } } diff --git a/src/Umbraco.Core/Services/DataTypeService.cs b/src/Umbraco.Core/Services/DataTypeService.cs index d02a90d1c5..90478ac91a 100644 --- a/src/Umbraco.Core/Services/DataTypeService.cs +++ b/src/Umbraco.Core/Services/DataTypeService.cs @@ -186,7 +186,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - return repository.GetByQuery(repository.QueryT.Where(x => x.Name == name)).FirstOrDefault(); + return repository.GetByQuery(uow.Query().Where(x => x.Name == name)).FirstOrDefault(); } } @@ -214,7 +214,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Key == id); + var query = uow.Query().Where(x => x.Key == id); return repository.GetByQuery(query).FirstOrDefault(); } } @@ -229,7 +229,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.PropertyEditorAlias == propertyEditorAlias); + var query = uow.Query().Where(x => x.PropertyEditorAlias == propertyEditorAlias); return repository.GetByQuery(query); } } diff --git a/src/Umbraco.Core/Services/ExternalLoginService.cs b/src/Umbraco.Core/Services/ExternalLoginService.cs index b2dea55372..44451851be 100644 --- a/src/Umbraco.Core/Services/ExternalLoginService.cs +++ b/src/Umbraco.Core/Services/ExternalLoginService.cs @@ -26,7 +26,7 @@ namespace Umbraco.Core.Services { var repo = uow.CreateRepository(); return repo - .GetByQuery(repo.QueryT.Where(x => x.UserId == userId)) + .GetByQuery(uow.Query().Where(x => x.UserId == userId)) .ToList(); // ToList is important here, must evaluate within uow! } } @@ -43,7 +43,7 @@ namespace Umbraco.Core.Services { var repo = uow.CreateRepository(); return repo - .GetByQuery(repo.QueryT.Where(x => x.ProviderKey == login.ProviderKey && x.LoginProvider == login.LoginProvider)) + .GetByQuery(uow.Query().Where(x => x.ProviderKey == login.ProviderKey && x.LoginProvider == login.LoginProvider)) .ToList(); // ToList is important here, must evaluate within uow! } } diff --git a/src/Umbraco.Core/Services/FileService.cs b/src/Umbraco.Core/Services/FileService.cs index 70ad75ffca..c5e3e4b102 100644 --- a/src/Umbraco.Core/Services/FileService.cs +++ b/src/Umbraco.Core/Services/FileService.cs @@ -436,7 +436,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Key == id); + var query = uow.Query().Where(x => x.Key == id); return repository.GetByQuery(query).SingleOrDefault(); } } diff --git a/src/Umbraco.Core/Services/LocalizationService.cs b/src/Umbraco.Core/Services/LocalizationService.cs index fe26e84346..789e07eb49 100644 --- a/src/Umbraco.Core/Services/LocalizationService.cs +++ b/src/Umbraco.Core/Services/LocalizationService.cs @@ -159,7 +159,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == parentId); + var query = uow.Query().Where(x => x.ParentId == parentId); var items = repository.GetByQuery(query).ToArray(); //ensure the lazy Language callback is assigned foreach (var item in items) @@ -195,7 +195,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == null); + var query = uow.Query().Where(x => x.ParentId == null); var items = repository.GetByQuery(query).ToArray(); //ensure the lazy Language callback is assigned foreach (var item in items) diff --git a/src/Umbraco.Core/Services/MacroService.cs b/src/Umbraco.Core/Services/MacroService.cs index 96249512b3..503d08f393 100644 --- a/src/Umbraco.Core/Services/MacroService.cs +++ b/src/Umbraco.Core/Services/MacroService.cs @@ -46,7 +46,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var q = repository.QueryT.Where(x => x.Alias == alias); + var q = uow.Query().Where(x => x.Alias == alias); return repository.GetByQuery(q).FirstOrDefault(); } } diff --git a/src/Umbraco.Core/Services/MediaService.cs b/src/Umbraco.Core/Services/MediaService.cs index 64f5d5648f..2ebb111907 100644 --- a/src/Umbraco.Core/Services/MediaService.cs +++ b/src/Umbraco.Core/Services/MediaService.cs @@ -61,7 +61,7 @@ namespace Umbraco.Core.Services } var repo = uow.CreateRepository(); - var query = repo.QueryT.Where(x => x.Trashed == false); + var query = uow.Query().Where(x => x.Trashed == false); if (mediaTypeId > 0) query = query.Where(x => x.ContentTypeId == mediaTypeId); return repo.Count(query); @@ -334,7 +334,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MediaTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Key == key); + var query = uow.Query().Where(x => x.Key == key); return repository.GetByQuery(query).SingleOrDefault(); } } @@ -350,7 +350,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MediaTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ContentTypeId == id); + var query = uow.Query().Where(x => x.ContentTypeId == id); return repository.GetByQuery(query); } } @@ -367,7 +367,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MediaTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Level == level && x.Trashed == false); + var query = uow.Query().Where(x => x.Level == level && x.Trashed == false); return repository.GetByQuery(query); } } @@ -449,7 +449,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MediaTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == id); + var query = uow.Query().Where(x => x.ParentId == id); return repository.GetByQuery(query).OrderBy(x => x.SortOrder); } } @@ -497,7 +497,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MediaTree); var repository = uow.CreateRepository(); - var query = repository.QueryT; + var query = uow.Query(); //if the id is System Root, then just get all - NO! does not make sense! //if (id != Constants.System.Root) query.Where(x => x.ParentId == id); @@ -530,7 +530,7 @@ namespace Umbraco.Core.Services uow.ReadLock(Constants.Locks.MediaTree); var repository = uow.CreateRepository(); - var query = repository.QueryT; + var query = uow.Query(); // always check for a parent - else it will also get decendants (and then you should use the GetPagedDescendants method) query.Where(x => x.ParentId == id); @@ -589,7 +589,7 @@ namespace Umbraco.Core.Services uow.ReadLock(Constants.Locks.MediaTree); var repository = uow.CreateRepository(); - var query = repository.QueryT; + var query = uow.Query(); //if the id is System Root, then just get all if (id != Constants.System.Root) query.Where(x => x.Path.SqlContains($",{id},", TextColumnType.NVarchar)); @@ -613,7 +613,7 @@ namespace Umbraco.Core.Services return Enumerable.Empty(); var pathMatch = media.Path + ","; - var query = repository.QueryT.Where(x => x.Id != media.Id && x.Path.StartsWith(pathMatch)); + var query = uow.Query().Where(x => x.Id != media.Id && x.Path.StartsWith(pathMatch)); return repository.GetByQuery(query); } } @@ -630,7 +630,7 @@ namespace Umbraco.Core.Services uow.ReadLock(Constants.Locks.MediaTree); var repository = uow.CreateRepository(); var pathMatch = media.Path + ","; - var query = repository.QueryT.Where(x => x.Id != media.Id && x.Path.StartsWith(pathMatch)); + var query = uow.Query().Where(x => x.Id != media.Id && x.Path.StartsWith(pathMatch)); return repository.GetByQuery(query); } } @@ -670,7 +670,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MediaTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == Constants.System.Root); + var query = uow.Query().Where(x => x.ParentId == Constants.System.Root); return repository.GetByQuery(query); } } @@ -686,7 +686,7 @@ namespace Umbraco.Core.Services uow.ReadLock(Constants.Locks.MediaTree); var repository = uow.CreateRepository(); var bin = $"{Constants.System.Root},{Constants.System.RecycleBinMedia},"; - var query = repository.QueryT.Where(x => x.Path.StartsWith(bin)); + var query = uow.Query().Where(x => x.Path.StartsWith(bin)); return repository.GetByQuery(query); } } @@ -701,7 +701,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == id); + var query = uow.Query().Where(x => x.ParentId == id); var count = repository.Count(query); return count > 0; } @@ -1188,7 +1188,7 @@ namespace Umbraco.Core.Services } // emptying the recycle bin means deleting whetever is in there - do it properly! - var query = repository.QueryT.Where(x => x.ParentId == Constants.System.RecycleBinMedia); + var query = uow.Query().Where(x => x.ParentId == Constants.System.RecycleBinMedia); var medias = repository.GetByQuery(query).ToArray(); foreach (var media in medias) { @@ -1426,7 +1426,7 @@ namespace Umbraco.Core.Services uow.WriteLock(Constants.Locks.MediaTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.WhereIn(x => x.ContentTypeId, mediaTypeIdsA); + var query = uow.Query().WhereIn(x => x.ContentTypeId, mediaTypeIdsA); var medias = repository.GetByQuery(query).ToArray(); if (uow.Events.DispatchCancelable(Deleting, this, new DeleteEventArgs(medias))) @@ -1441,7 +1441,7 @@ namespace Umbraco.Core.Services { // if current media has children, move them to trash var m = media; - var childQuery = repository.QueryT.Where(x => x.Path.StartsWith(m.Path)); + var childQuery = uow.Query().Where(x => x.Path.StartsWith(m.Path)); var children = repository.GetByQuery(childQuery); foreach (var child in children.Where(x => mediaTypeIdsA.Contains(x.ContentTypeId) == false)) { @@ -1489,7 +1489,7 @@ namespace Umbraco.Core.Services uow.ReadLock(Constants.Locks.MediaTypes); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Alias == mediaTypeAlias); + var query = uow.Query().Where(x => x.Alias == mediaTypeAlias); var mediaType = repository.GetByQuery(query).FirstOrDefault(); if (mediaType == null) diff --git a/src/Umbraco.Core/Services/MemberService.cs b/src/Umbraco.Core/Services/MemberService.cs index a6393d5d8b..1979f0a244 100644 --- a/src/Umbraco.Core/Services/MemberService.cs +++ b/src/Umbraco.Core/Services/MemberService.cs @@ -58,21 +58,21 @@ namespace Umbraco.Core.Services switch (countType) { case MemberCountType.All: - query = repository.QueryT; + query = uow.Query(); break; case MemberCountType.Online: var fromDate = DateTime.Now.AddMinutes(-Membership.UserIsOnlineTimeWindow); - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == Constants.Conventions.Member.LastLoginDate && ((Member)x).DateTimePropertyValue > fromDate); break; case MemberCountType.LockedOut: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == Constants.Conventions.Member.IsLockedOut && ((Member)x).BoolPropertyValue); break; case MemberCountType.Approved: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == Constants.Conventions.Member.IsApproved && ((Member)x).BoolPropertyValue); break; @@ -334,7 +334,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MemberTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Key == id); + var query = uow.Query().Where(x => x.Key == id); return repository.GetByQuery(query).FirstOrDefault(); } } @@ -371,8 +371,8 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MemberTree); var repository = uow.CreateRepository(); - var query1 = memberTypeAlias == null ? null : repository.QueryT.Where(x => x.ContentTypeAlias == memberTypeAlias); - var query2 = filter == null ? null : repository.QueryT.Where(x => x.Name.Contains(filter) || x.Username.Contains(filter)); + var query1 = memberTypeAlias == null ? null : uow.Query().Where(x => x.ContentTypeAlias == memberTypeAlias); + var query2 = filter == null ? null : uow.Query().Where(x => x.Name.Contains(filter) || x.Username.Contains(filter)); return repository.GetPagedResultsByQuery(query1, pageIndex, pageSize, out totalRecords, orderBy, orderDirection, orderBySystemField, query2); } } @@ -406,7 +406,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MemberTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Email.Equals(email)); + var query = uow.Query().Where(x => x.Email.Equals(email)); return repository.GetByQuery(query).FirstOrDefault(); } } @@ -426,7 +426,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MemberTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Username.Equals(username)); + var query = uow.Query().Where(x => x.Username.Equals(username)); return repository.GetByQuery(query).FirstOrDefault(); } } @@ -442,7 +442,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MemberTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ContentTypeAlias == memberTypeAlias); + var query = uow.Query().Where(x => x.ContentTypeAlias == memberTypeAlias); return repository.GetByQuery(query); } } @@ -459,7 +459,7 @@ namespace Umbraco.Core.Services uow.ReadLock(Constants.Locks.MemberTree); var repository = uow.CreateRepository(); repository.Get(memberTypeId); - var query = repository.QueryT.Where(x => x.ContentTypeId == memberTypeId); + var query = uow.Query().Where(x => x.ContentTypeId == memberTypeId); return repository.GetByQuery(query); } } @@ -510,7 +510,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MemberTree); var repository = uow.CreateRepository(); - var query = repository.QueryT; + var query = uow.Query(); switch (matchType) { @@ -552,7 +552,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MemberTree); var repository = uow.CreateRepository(); - var query = repository.QueryT; + var query = uow.Query(); switch (matchType) { @@ -594,7 +594,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MemberTree); var repository = uow.CreateRepository(); - var query = repository.QueryT; + var query = uow.Query(); switch (matchType) { @@ -639,25 +639,25 @@ namespace Umbraco.Core.Services switch (matchType) { case StringPropertyMatchType.Exact: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && (((Member)x).LongStringPropertyValue.SqlEquals(value, TextColumnType.NText) || ((Member)x).ShortStringPropertyValue.SqlEquals(value, TextColumnType.NVarchar))); break; case StringPropertyMatchType.Contains: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && (((Member)x).LongStringPropertyValue.SqlContains(value, TextColumnType.NText) || ((Member)x).ShortStringPropertyValue.SqlContains(value, TextColumnType.NVarchar))); break; case StringPropertyMatchType.StartsWith: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && (((Member)x).LongStringPropertyValue.SqlStartsWith(value, TextColumnType.NText) || ((Member)x).ShortStringPropertyValue.SqlStartsWith(value, TextColumnType.NVarchar))); break; case StringPropertyMatchType.EndsWith: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && (((Member)x).LongStringPropertyValue.SqlEndsWith(value, TextColumnType.NText) || ((Member)x).ShortStringPropertyValue.SqlEndsWith(value, TextColumnType.NVarchar))); @@ -688,27 +688,27 @@ namespace Umbraco.Core.Services switch (matchType) { case ValuePropertyMatchType.Exact: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).IntegerPropertyValue == value); break; case ValuePropertyMatchType.GreaterThan: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).IntegerPropertyValue > value); break; case ValuePropertyMatchType.LessThan: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).IntegerPropertyValue < value); break; case ValuePropertyMatchType.GreaterThanOrEqualTo: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).IntegerPropertyValue >= value); break; case ValuePropertyMatchType.LessThanOrEqualTo: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).IntegerPropertyValue <= value); break; @@ -732,7 +732,7 @@ namespace Umbraco.Core.Services { uow.ReadLock(Constants.Locks.MemberTree); var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => + var query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).BoolPropertyValue == value); @@ -758,27 +758,27 @@ namespace Umbraco.Core.Services switch (matchType) { case ValuePropertyMatchType.Exact: - query = repository.QueryT.Where( x => + query = uow.Query().Where( x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).DateTimePropertyValue == value); break; case ValuePropertyMatchType.GreaterThan: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).DateTimePropertyValue > value); break; case ValuePropertyMatchType.LessThan: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).DateTimePropertyValue < value); break; case ValuePropertyMatchType.GreaterThanOrEqualTo: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).DateTimePropertyValue >= value); break; case ValuePropertyMatchType.LessThanOrEqualTo: - query = repository.QueryT.Where(x => + query = uow.Query().Where(x => ((Member)x).PropertyTypeAlias == propertyTypeAlias && ((Member)x).DateTimePropertyValue <= value); break; @@ -1013,7 +1013,7 @@ namespace Umbraco.Core.Services throw new InvalidOperationException("The role " + roleName + " is currently assigned to members"); } - var query = repository.QueryT.Where(g => g.Name == roleName); + var query = uow.Query().Where(g => g.Name == roleName); var found = repository.GetByQuery(query).ToArray(); foreach (var memberGroup in found) @@ -1258,7 +1258,7 @@ namespace Umbraco.Core.Services var repository = uow.CreateRepository(); //TODO: What about content that has the contenttype as part of its composition? - var query = repository.QueryT.Where(x => x.ContentTypeId == memberTypeId); + var query = uow.Query().Where(x => x.ContentTypeId == memberTypeId); var members = repository.GetByQuery(query).ToArray(); if (uow.Events.DispatchCancelable(Deleting, this, new DeleteEventArgs(members))) diff --git a/src/Umbraco.Core/Services/MigrationEntryService.cs b/src/Umbraco.Core/Services/MigrationEntryService.cs index 586ea76600..e3fd7b6bc7 100644 --- a/src/Umbraco.Core/Services/MigrationEntryService.cs +++ b/src/Umbraco.Core/Services/MigrationEntryService.cs @@ -66,7 +66,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repo = uow.CreateRepository(); - var query = repo.QueryT + var query = uow.Query() .Where(x => x.MigrationName.ToUpper() == migrationName.ToUpper()); return repo.GetByQuery(query); } diff --git a/src/Umbraco.Core/Services/PackagingService.cs b/src/Umbraco.Core/Services/PackagingService.cs index 3fa6467ed8..f321f8a705 100644 --- a/src/Umbraco.Core/Services/PackagingService.cs +++ b/src/Umbraco.Core/Services/PackagingService.cs @@ -783,7 +783,7 @@ namespace Umbraco.Core.Services using (var uow = _uowProvider.CreateUnitOfWork()) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Alias == contentTypeAlias); + var query = uow.Query().Where(x => x.Alias == contentTypeAlias); var contentType = repository.GetByQuery(query).FirstOrDefault(); if (contentType == null) diff --git a/src/Umbraco.Core/Services/RelationService.cs b/src/Umbraco.Core/Services/RelationService.cs index 0bc27816c8..2146ef74fd 100644 --- a/src/Umbraco.Core/Services/RelationService.cs +++ b/src/Umbraco.Core/Services/RelationService.cs @@ -72,7 +72,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Alias == alias); + var query = uow.Query().Where(x => x.Alias == alias); return repository.GetByQuery(query).FirstOrDefault(); } } @@ -111,7 +111,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.RelationTypeId == relationTypeId); + var query = uow.Query().Where(x => x.RelationTypeId == relationTypeId); return repository.GetByQuery(query); } } @@ -140,7 +140,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == id); + var query = uow.Query().Where(x => x.ParentId == id); return repository.GetByQuery(query); } } @@ -176,7 +176,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ChildId == id); + var query = uow.Query().Where(x => x.ChildId == id); return repository.GetByQuery(query); } } @@ -213,7 +213,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ChildId == id || x.ParentId == id); + var query = uow.Query().Where(x => x.ChildId == id || x.ParentId == id); return repository.GetByQuery(query); } } @@ -224,13 +224,13 @@ namespace Umbraco.Core.Services { var repository = uow.CreateRepository(); - var rtQuery = repository.QueryT.Where(x => x.Alias == relationTypeAlias); + var rtQuery = uow.Query().Where(x => x.Alias == relationTypeAlias); var relationType = repository.GetByQuery(rtQuery).FirstOrDefault(); if (relationType == null) return Enumerable.Empty(); var relationRepo = uow.CreateRepository(); - var query = relationRepo.QueryT.Where(x => (x.ChildId == id || x.ParentId == id) && x.RelationTypeId == relationType.Id); + var query = uow.Query().Where(x => (x.ChildId == id || x.ParentId == id) && x.RelationTypeId == relationType.Id); return relationRepo.GetByQuery(query); } } @@ -246,7 +246,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Name == relationTypeName); + var query = uow.Query().Where(x => x.Name == relationTypeName); var relationTypes = repository.GetByQuery(query); relationTypeIds = relationTypes.Select(x => x.Id).ToList(); } @@ -267,7 +267,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Alias == relationTypeAlias); + var query = uow.Query().Where(x => x.Alias == relationTypeAlias); var relationTypes = repository.GetByQuery(query); relationTypeIds = relationTypes.Select(x => x.Id).ToList(); } @@ -287,7 +287,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.RelationTypeId == relationTypeId); + var query = uow.Query().Where(x => x.RelationTypeId == relationTypeId); return repository.GetByQuery(query); } } @@ -458,7 +458,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.RelationTypeId == relationType.Id); + var query = uow.Query().Where(x => x.RelationTypeId == relationType.Id); return repository.GetByQuery(query).Any(); } } @@ -473,7 +473,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == id || x.ChildId == id); + var query = uow.Query().Where(x => x.ParentId == id || x.ChildId == id); return repository.GetByQuery(query).Any(); } } @@ -489,7 +489,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == parentId && x.ChildId == childId); + var query = uow.Query().Where(x => x.ParentId == parentId && x.ChildId == childId); return repository.GetByQuery(query).Any(); } } @@ -523,7 +523,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.ParentId == parentId && x.ChildId == childId && x.RelationTypeId == relationType.Id); + var query = uow.Query().Where(x => x.ParentId == parentId && x.ChildId == childId && x.RelationTypeId == relationType.Id); return repository.GetByQuery(query).Any(); } } @@ -650,7 +650,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork()) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.RelationTypeId == relationType.Id); + var query = uow.Query().Where(x => x.RelationTypeId == relationType.Id); relations.AddRange(repository.GetByQuery(query).ToList()); foreach (var relation in relations) @@ -673,7 +673,7 @@ namespace Umbraco.Core.Services foreach (var relationTypeId in relationTypeIds) { var id = relationTypeId; - var query = repository.QueryT.Where(x => x.RelationTypeId == id); + var query = uow.Query().Where(x => x.RelationTypeId == id); relations.AddRange(repository.GetByQuery(query)); } } diff --git a/src/Umbraco.Core/Services/TaskService.cs b/src/Umbraco.Core/Services/TaskService.cs index d7bc6c09bc..4f43b856e9 100644 --- a/src/Umbraco.Core/Services/TaskService.cs +++ b/src/Umbraco.Core/Services/TaskService.cs @@ -20,7 +20,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repo = uow.CreateRepository(); - return repo.GetByQuery(repo.QueryT.Where(x => x.Alias == taskTypeAlias)).FirstOrDefault(); + return repo.GetByQuery(uow.Query().Where(x => x.Alias == taskTypeAlias)).FirstOrDefault(); } } diff --git a/src/Umbraco.Core/Services/UserService.cs b/src/Umbraco.Core/Services/UserService.cs index 7b8c124f41..000d5e0eda 100644 --- a/src/Umbraco.Core/Services/UserService.cs +++ b/src/Umbraco.Core/Services/UserService.cs @@ -200,7 +200,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Email.Equals(email)); + var query = uow.Query().Where(x => x.Email.Equals(email)); return repository.GetByQuery(query).FirstOrDefault(); } } @@ -215,7 +215,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Username.Equals(username)); + var query = uow.Query().Where(x => x.Username.Equals(username)); return repository.GetByQuery(query).FirstOrDefault(); } } @@ -399,7 +399,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT; + var query = uow.Query(); switch (matchType) { @@ -440,7 +440,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT; + var query = uow.Query(); switch (matchType) { @@ -487,7 +487,7 @@ namespace Umbraco.Core.Services switch (countType) { case MemberCountType.All: - query = repository.QueryT; + query = uow.Query(); break; case MemberCountType.Online: throw new NotImplementedException(); @@ -499,10 +499,10 @@ namespace Umbraco.Core.Services // ((Member)x).DateTimePropertyValue > fromDate); //return repository.GetCountByQuery(query); case MemberCountType.LockedOut: - query = repository.QueryT.Where(x => x.IsLockedOut); + query = uow.Query().Where(x => x.IsLockedOut); break; case MemberCountType.Approved: - query = repository.QueryT.Where(x => x.IsApproved); + query = uow.Query().Where(x => x.IsApproved); break; default: throw new ArgumentOutOfRangeException(nameof(countType)); @@ -634,7 +634,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Alias == alias); + var query = uow.Query().Where(x => x.Alias == alias); return repository.GetByQuery(query).SingleOrDefault(); } } @@ -663,7 +663,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.CreateUnitOfWork(readOnly: true)) { var repository = uow.CreateRepository(); - var query = repository.QueryT.Where(x => x.Name == name); + var query = uow.Query().Where(x => x.Name == name); return repository.GetByQuery(query).SingleOrDefault(); } } diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 5ad6d75802..282fd422fc 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -1171,12 +1171,9 @@ - - - diff --git a/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs index 1811b9e3b2..cdee4d5457 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs @@ -480,7 +480,7 @@ namespace Umbraco.Tests.Persistence.Repositories DataTypeDefinition dtd; using (var unitOfWork = provider.CreateUnitOfWork()) { - var repository = Container.GetInstance(unitOfWork); + var repository = Container.GetInstance(unitOfWork); dtd = new DataTypeDefinition(-1, Constants.PropertyEditors.RadioButtonListAlias) { Name = "test" }; repository.AddOrUpdate(dtd); unitOfWork.Flush(); @@ -511,7 +511,7 @@ namespace Umbraco.Tests.Persistence.Repositories object id; using (var unitOfWork = provider.CreateUnitOfWork()) { - var repository = Container.GetInstance(unitOfWork); + var repository = Container.GetInstance(unitOfWork); dtd = new DataTypeDefinition(-1, Constants.PropertyEditors.RadioButtonListAlias) { Name = "test" }; repository.AddOrUpdate(dtd); unitOfWork.Flush(); @@ -535,7 +535,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var unitOfWork = provider.CreateUnitOfWork()) { - var repository = Container.GetInstance(unitOfWork); + var repository = Container.GetInstance(unitOfWork); //ensure it still gets resolved! var val = repository.GetPreValueAsString(Convert.ToInt32(id)); Assert.AreEqual("test1", val); diff --git a/src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs index 2f5bd06a0f..b446e50d2c 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs @@ -235,7 +235,7 @@ namespace Umbraco.Tests.Persistence.Repositories var provider = TestObjects.GetScopeUnitOfWorkProvider(Logger); using (var unitOfWork = provider.CreateUnitOfWork()) { - var languageRepository = Container.GetInstance(unitOfWork); + var languageRepository = Container.GetInstance(unitOfWork); var repository = CreateRepository(unitOfWork); var language = languageRepository.Get(1); diff --git a/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs index e5c1514147..e161ac205d 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs @@ -765,7 +765,7 @@ namespace Umbraco.Tests.Persistence.Repositories return stream; } - private IEnumerable CreateHierarchy(ITemplateRepository repository, IDatabaseUnitOfWork unitOfWork) + private IEnumerable CreateHierarchy(ITemplateRepository repository, IScopeUnitOfWork unitOfWork) { var parent = new Template("parent", "parent") { diff --git a/src/Umbraco.Web/PublishedCache/NuCache/DataSource/Database.cs b/src/Umbraco.Web/PublishedCache/NuCache/DataSource/Database.cs index 03b545e6cf..e07c9f5fc7 100644 --- a/src/Umbraco.Web/PublishedCache/NuCache/DataSource/Database.cs +++ b/src/Umbraco.Web/PublishedCache/NuCache/DataSource/Database.cs @@ -14,7 +14,7 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource // provides efficient database access for NuCache class Database { - public ContentNodeKit GetContentSource(IDatabaseUnitOfWork uow, int id) + public ContentNodeKit GetContentSource(IScopeUnitOfWork uow, int id) { var dto = uow.Database.Fetch(new Sql(@"SELECT n.id Id, n.uniqueId Uid, @@ -36,7 +36,7 @@ WHERE n.nodeObjectType=@objType AND n.id=@id return dto == null ? new ContentNodeKit() : CreateContentNodeKit(dto); } - public ContentNodeKit GetMediaSource(IDatabaseUnitOfWork uow, int id) + public ContentNodeKit GetMediaSource(IScopeUnitOfWork uow, int id) { // should be only 1 version for medias @@ -58,7 +58,7 @@ WHERE n.nodeObjectType=@objType AND n.id=@id // we want arrays, we want them all loaded, not an enumerable - public IEnumerable GetAllContentSources(IDatabaseUnitOfWork uow) + public IEnumerable GetAllContentSources(IScopeUnitOfWork uow) { return uow.Database.Query(new Sql(@"SELECT n.id Id, n.uniqueId Uid, @@ -80,7 +80,7 @@ ORDER BY n.level, n.sortOrder ", new { objType = Constants.ObjectTypes.DocumentGuid })).Select(CreateContentNodeKit); } - public IEnumerable GetAllMediaSources(IDatabaseUnitOfWork uow) + public IEnumerable GetAllMediaSources(IScopeUnitOfWork uow) { // should be only 1 version for medias @@ -100,7 +100,7 @@ ORDER BY n.level, n.sortOrder ", new { objType = Constants.ObjectTypes.MediaGuid })).Select(CreateMediaNodeKit); } - public IEnumerable GetBranchContentSources(IDatabaseUnitOfWork uow, int id) + public IEnumerable GetBranchContentSources(IScopeUnitOfWork uow, int id) { return uow.Database.Query(new Sql(@"SELECT n.id Id, n.uniqueId Uid, @@ -123,7 +123,7 @@ ORDER BY n.level, n.sortOrder ", new { objType = Constants.ObjectTypes.DocumentGuid, /*id =*/ id })).Select(CreateContentNodeKit); } - public IEnumerable GetBranchMediaSources(IDatabaseUnitOfWork uow, int id) + public IEnumerable GetBranchMediaSources(IScopeUnitOfWork uow, int id) { // should be only 1 version for medias @@ -144,7 +144,7 @@ ORDER BY n.level, n.sortOrder ", new { objType = Constants.ObjectTypes.MediaGuid, /*id =*/ id })).Select(CreateMediaNodeKit); } - public IEnumerable GetTypeContentSources(IDatabaseUnitOfWork uow, IEnumerable ids) + public IEnumerable GetTypeContentSources(IScopeUnitOfWork uow, IEnumerable ids) { return uow.Database.Query(new Sql(@"SELECT n.id Id, n.uniqueId Uid, @@ -166,7 +166,7 @@ ORDER BY n.level, n.sortOrder ", new { objType = Constants.ObjectTypes.DocumentGuid, /*id =*/ ids })).Select(CreateContentNodeKit); } - public IEnumerable GetTypeMediaSources(IDatabaseUnitOfWork uow, IEnumerable ids) + public IEnumerable GetTypeMediaSources(IScopeUnitOfWork uow, IEnumerable ids) { // should be only 1 version for medias diff --git a/src/Umbraco.Web/PublishedCache/NuCache/FacadeService.cs b/src/Umbraco.Web/PublishedCache/NuCache/FacadeService.cs index 0f1559edcf..4c5a5f5787 100644 --- a/src/Umbraco.Web/PublishedCache/NuCache/FacadeService.cs +++ b/src/Umbraco.Web/PublishedCache/NuCache/FacadeService.cs @@ -226,7 +226,7 @@ namespace Umbraco.Web.PublishedCache.NuCache // before I read it? NO! because the WHOLE content tree is read-locked using WithReadLocked. // don't panic. - private void LockAndLoadContent(Action action) + private void LockAndLoadContent(Action action) { _contentStore.WriteLocked(() => { @@ -239,7 +239,7 @@ namespace Umbraco.Web.PublishedCache.NuCache }); } - private void LoadContentFromDatabaseLocked(IDatabaseUnitOfWork uow) + private void LoadContentFromDatabaseLocked(IScopeUnitOfWork uow) { // locks: // contentStore is wlocked (1 thread) @@ -259,7 +259,7 @@ namespace Umbraco.Web.PublishedCache.NuCache _logger.Debug("Loaded content from database (" + sw.ElapsedMilliseconds + "ms)."); } - private void LoadContentFromLocalDbLocked(IDatabaseUnitOfWork uow) + private void LoadContentFromLocalDbLocked(IScopeUnitOfWork uow) { var contentTypes = _serviceContext.ContentTypeService.GetAll() .Select(x => new PublishedContentType(PublishedItemType.Content, x)); @@ -296,7 +296,7 @@ namespace Umbraco.Web.PublishedCache.NuCache // _contentStore.Set(contentNode); //} - private void LockAndLoadMedia(Action action) + private void LockAndLoadMedia(Action action) { _mediaStore.WriteLocked(() => { @@ -309,7 +309,7 @@ namespace Umbraco.Web.PublishedCache.NuCache }); } - private void LoadMediaFromDatabaseLocked(IDatabaseUnitOfWork uow) + private void LoadMediaFromDatabaseLocked(IScopeUnitOfWork uow) { // locks & notes: see content @@ -327,7 +327,7 @@ namespace Umbraco.Web.PublishedCache.NuCache _logger.Debug("Loaded media from database (" + sw.ElapsedMilliseconds + "ms)."); } - private void LoadMediaFromLocalDbLocked(IDatabaseUnitOfWork uow) + private void LoadMediaFromLocalDbLocked(IScopeUnitOfWork uow) { var mediaTypes = _serviceContext.MediaTypeService.GetAll() .Select(x => new PublishedContentType(PublishedItemType.Media, x)); @@ -1178,7 +1178,7 @@ namespace Umbraco.Web.PublishedCache.NuCache } // assumes content tree lock - private void RebuildContentDbCacheLocked(IDatabaseUnitOfWork uow, int groupSize, IEnumerable contentTypeIds) + private void RebuildContentDbCacheLocked(IScopeUnitOfWork uow, int groupSize, IEnumerable contentTypeIds) { var contentTypeIdsA = contentTypeIds?.ToArray(); var contentObjectType = Guid.Parse(Constants.ObjectTypes.Document); @@ -1249,7 +1249,7 @@ WHERE cmsContentNu.nodeId IN ( } // assumes media tree lock - public void RebuildMediaDbCacheLocked(IDatabaseUnitOfWork uow, int groupSize, IEnumerable contentTypeIds) + public void RebuildMediaDbCacheLocked(IScopeUnitOfWork uow, int groupSize, IEnumerable contentTypeIds) { var contentTypeIdsA = contentTypeIds?.ToArray(); var mediaObjectType = Guid.Parse(Constants.ObjectTypes.Media); @@ -1310,7 +1310,7 @@ WHERE cmsContentNu.nodeId IN ( } // assumes member tree lock - public void RebuildMemberDbCacheLocked(IDatabaseUnitOfWork uow, int groupSize, IEnumerable contentTypeIds) + public void RebuildMemberDbCacheLocked(IScopeUnitOfWork uow, int groupSize, IEnumerable contentTypeIds) { var contentTypeIdsA = contentTypeIds?.ToArray(); var memberObjectType = Guid.Parse(Constants.ObjectTypes.Member); @@ -1370,7 +1370,7 @@ WHERE cmsContentNu.nodeId IN ( } // assumes content tree lock - private bool VerifyContentDbCacheLocked(IDatabaseUnitOfWork uow) + private bool VerifyContentDbCacheLocked(IScopeUnitOfWork uow) { // every published content item should have a corresponding row in cmsContentXml // every content item should have a corresponding row in cmsPreviewXml @@ -1401,7 +1401,7 @@ AND cmsContentNu.nodeId IS NULL;" } // assumes media tree lock - public bool VerifyMediaDbCacheLocked(IDatabaseUnitOfWork uow) + public bool VerifyMediaDbCacheLocked(IScopeUnitOfWork uow) { // every non-trashed media item should have a corresponding row in cmsContentXml @@ -1431,7 +1431,7 @@ AND cmsContentNu.nodeId IS NULL } // assumes member tree lock - public bool VerifyMemberDbCacheLocked(IDatabaseUnitOfWork uow) + public bool VerifyMemberDbCacheLocked(IScopeUnitOfWork uow) { // every member item should have a corresponding row in cmsContentXml diff --git a/src/Umbraco.Web/PublishedCache/XmlPublishedCache/XmlStore.cs b/src/Umbraco.Web/PublishedCache/XmlPublishedCache/XmlStore.cs index 1336fbf129..e9f29cb980 100644 --- a/src/Umbraco.Web/PublishedCache/XmlPublishedCache/XmlStore.cs +++ b/src/Umbraco.Web/PublishedCache/XmlPublishedCache/XmlStore.cs @@ -1699,7 +1699,7 @@ ORDER BY umbracoNode.level, umbracoNode.sortOrder"; } // assumes content tree lock - private void RebuildContentXmlLocked(IDatabaseUnitOfWork unitOfWork, IContentRepository repository, int groupSize, IEnumerable contentTypeIds) + private void RebuildContentXmlLocked(IScopeUnitOfWork unitOfWork, IContentRepository repository, int groupSize, IEnumerable contentTypeIds) { var contentTypeIdsA = contentTypeIds?.ToArray(); var contentObjectType = Guid.Parse(Constants.ObjectTypes.Document); @@ -1772,7 +1772,7 @@ WHERE cmsContentXml.nodeId IN ( } // assumes content tree lock - private void RebuildPreviewXmlLocked(IDatabaseUnitOfWork unitOfWork, IContentRepository repository, int groupSize, IEnumerable contentTypeIds) + private void RebuildPreviewXmlLocked(IScopeUnitOfWork unitOfWork, IContentRepository repository, int groupSize, IEnumerable contentTypeIds) { var contentTypeIdsA = contentTypeIds?.ToArray(); var contentObjectType = Guid.Parse(Constants.ObjectTypes.Document); @@ -1849,7 +1849,7 @@ WHERE cmsPreviewXml.nodeId IN ( } // assumes media tree lock - public void RebuildMediaXmlLocked(IDatabaseUnitOfWork unitOfWork, IMediaRepository repository, int groupSize, IEnumerable contentTypeIds) + public void RebuildMediaXmlLocked(IScopeUnitOfWork unitOfWork, IMediaRepository repository, int groupSize, IEnumerable contentTypeIds) { var contentTypeIdsA = contentTypeIds?.ToArray(); var mediaObjectType = Guid.Parse(Constants.ObjectTypes.Media); @@ -1920,7 +1920,7 @@ WHERE cmsContentXml.nodeId IN ( } // assumes member tree lock - public void RebuildMemberXmlLocked(IDatabaseUnitOfWork unitOfWork, IMemberRepository repository, int groupSize, IEnumerable contentTypeIds) + public void RebuildMemberXmlLocked(IScopeUnitOfWork unitOfWork, IMemberRepository repository, int groupSize, IEnumerable contentTypeIds) { var contentTypeIdsA = contentTypeIds?.ToArray(); var memberObjectType = Guid.Parse(Constants.ObjectTypes.Member); @@ -1989,7 +1989,7 @@ WHERE cmsContentXml.nodeId IN ( } // assumes content tree lock - private static bool VerifyContentAndPreviewXmlLocked(IDatabaseUnitOfWork unitOfWork) + private static bool VerifyContentAndPreviewXmlLocked(IScopeUnitOfWork unitOfWork) { // every published content item should have a corresponding row in cmsContentXml // every content item should have a corresponding row in cmsPreviewXml @@ -2031,7 +2031,7 @@ AND cmsPreviewXml.nodeId IS NULL OR cmsPreviewXml.xml NOT LIKE '% key=""' } // assumes media tree lock - public bool VerifyMediaXmlLocked(IDatabaseUnitOfWork unitOfWork, IMediaRepository repository) + public bool VerifyMediaXmlLocked(IScopeUnitOfWork unitOfWork, IMediaRepository repository) { // every non-trashed media item should have a corresponding row in cmsContentXml // and that row should have the key="..." attribute @@ -2064,7 +2064,7 @@ AND cmsContentXml.nodeId IS NULL OR cmsContentXml.xml NOT LIKE '% key=""' } // assumes member tree lock - public bool VerifyMemberXmlLocked(IDatabaseUnitOfWork unitOfWork, IMemberRepository repository) + public bool VerifyMemberXmlLocked(IScopeUnitOfWork unitOfWork, IMemberRepository repository) { // every member item should have a corresponding row in cmsContentXml diff --git a/src/Umbraco.Web/Services/SectionService.cs b/src/Umbraco.Web/Services/SectionService.cs index 8ae97a9e50..aa11eb118f 100644 --- a/src/Umbraco.Web/Services/SectionService.cs +++ b/src/Umbraco.Web/Services/SectionService.cs @@ -22,7 +22,7 @@ namespace Umbraco.Web.Services private readonly IUserService _userService; private readonly Lazy> _allAvailableSections; private readonly IApplicationTreeService _applicationTreeService; - private readonly IDatabaseUnitOfWorkProvider _uowProvider; + private readonly IScopeUnitOfWorkProvider _uowProvider; private readonly CacheHelper _cache; internal const string AppConfigFileName = "applications.config"; private static string _appConfig;