diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs index 868bc484b3..401f8ffc4a 100644 --- a/src/Umbraco.Core/Services/ContentService.cs +++ b/src/Umbraco.Core/Services/ContentService.cs @@ -1611,7 +1611,7 @@ namespace Umbraco.Core.Services NodeId = copy.Id, TagId = tag.TagId, PropertyTypeId = tag.PropertyTypeId }); } - uow.Commit(); + uow.Commit(); // todo - this should flush, not commit if (recursive) { diff --git a/src/Umbraco.Core/Services/ContentTypeService.cs b/src/Umbraco.Core/Services/ContentTypeService.cs index b21c2acee3..f59f1314c2 100644 --- a/src/Umbraco.Core/Services/ContentTypeService.cs +++ b/src/Umbraco.Core/Services/ContentTypeService.cs @@ -69,6 +69,7 @@ namespace Umbraco.Core.Services } catch (Exception ex) { + uow.Commit(); return Attempt.Fail(new OperationStatus(null, OperationStatusType.FailedExceptionThrown, evtMsgs), ex); } } @@ -106,6 +107,7 @@ namespace Umbraco.Core.Services } catch (Exception ex) { + uow.Commit(); return Attempt.Fail(new OperationStatus(null, OperationStatusType.FailedExceptionThrown, evtMsgs), ex); } } diff --git a/src/Umbraco.Core/Services/DataTypeService.cs b/src/Umbraco.Core/Services/DataTypeService.cs index a33949fb6d..c01b13136e 100644 --- a/src/Umbraco.Core/Services/DataTypeService.cs +++ b/src/Umbraco.Core/Services/DataTypeService.cs @@ -545,7 +545,10 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { if (uow.Events.DispatchCancelable(Deleting, this, new DeleteEventArgs(dataTypeDefinition))) + { + uow.Commit(); return; + } var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(uow); diff --git a/src/Umbraco.Core/Services/DomainService.cs b/src/Umbraco.Core/Services/DomainService.cs index 2248fc0c1f..d5637d50be 100644 --- a/src/Umbraco.Core/Services/DomainService.cs +++ b/src/Umbraco.Core/Services/DomainService.cs @@ -33,7 +33,10 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { if (uow.Events.DispatchCancelable(Deleting, this, new DeleteEventArgs(domain, evtMsgs))) + { + uow.Commit(); return OperationStatus.Cancelled(evtMsgs); + } var repository = RepositoryFactory.CreateDomainRepository(uow); repository.Delete(domain); @@ -90,7 +93,10 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { if (uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(domainEntity, evtMsgs))) + { + uow.Commit(); return OperationStatus.Cancelled(evtMsgs); + } var repository = RepositoryFactory.CreateDomainRepository(uow); repository.AddOrUpdate(domainEntity); diff --git a/src/Umbraco.Core/Services/EntityService.cs b/src/Umbraco.Core/Services/EntityService.cs index a9478f2ade..920af10961 100644 --- a/src/Umbraco.Core/Services/EntityService.cs +++ b/src/Umbraco.Core/Services/EntityService.cs @@ -647,7 +647,7 @@ namespace Umbraco.Core.Services /// public virtual UmbracoObjectTypes GetObjectType(int id) { - using (var uow = UowProvider.GetUnitOfWork()) + using (var uow = UowProvider.GetUnitOfWork(readOnly: true)) { var sql = new Sql().Select("nodeObjectType").From().Where(x => x.NodeId == id); var nodeObjectTypeId = uow.Database.ExecuteScalar(sql); @@ -663,7 +663,7 @@ namespace Umbraco.Core.Services /// public virtual UmbracoObjectTypes GetObjectType(Guid key) { - using (var uow = UowProvider.GetUnitOfWork()) + using (var uow = UowProvider.GetUnitOfWork(readOnly: true)) { var sql = new Sql().Select("nodeObjectType").From().Where(x => x.UniqueId == key); var nodeObjectTypeId = uow.Database.ExecuteScalar(sql); diff --git a/src/Umbraco.Core/Services/FileService.cs b/src/Umbraco.Core/Services/FileService.cs index a45beebbf3..6af683fa06 100644 --- a/src/Umbraco.Core/Services/FileService.cs +++ b/src/Umbraco.Core/Services/FileService.cs @@ -226,7 +226,7 @@ namespace Umbraco.Core.Services /// True if Script is valid, otherwise false public bool ValidateScript(Script script) { - using (var uow = UowProvider.GetUnitOfWork()) + using (var uow = UowProvider.GetUnitOfWork(readOnly: true)) { var repository = RepositoryFactory.CreateScriptRepository(uow); return repository.ValidateScript(script); @@ -727,9 +727,9 @@ namespace Umbraco.Core.Services public void CreatePartialViewFolder(string folderPath) { - var uow = UowProvider.GetUnitOfWork(); - using (var repository = RepositoryFactory.CreatePartialViewRepository(uow)) + using (var uow = UowProvider.GetUnitOfWork()) { + var repository = RepositoryFactory.CreatePartialViewRepository(uow); ((PartialViewRepository)repository).AddFolder(folderPath); uow.Commit(); } @@ -737,9 +737,9 @@ namespace Umbraco.Core.Services public void CreatePartialViewMacroFolder(string folderPath) { - var uow = UowProvider.GetUnitOfWork(); - using (var repository = RepositoryFactory.CreatePartialViewMacroRepository(uow)) + using (var uow = UowProvider.GetUnitOfWork()) { + var repository = RepositoryFactory.CreatePartialViewMacroRepository(uow); ((PartialViewMacroRepository)repository).AddFolder(folderPath); uow.Commit(); } diff --git a/src/Umbraco.Core/Services/MediaService.cs b/src/Umbraco.Core/Services/MediaService.cs index dd7997fad8..ed61e57583 100644 --- a/src/Umbraco.Core/Services/MediaService.cs +++ b/src/Umbraco.Core/Services/MediaService.cs @@ -1190,13 +1190,10 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { - if (raiseEvents) + if (raiseEvents && uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(asArray))) { - if (uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(asArray))) - { - uow.Commit(); - return false; - } + uow.Commit(); + return false; } var repository = RepositoryFactory.CreateMediaRepository(uow); diff --git a/src/Umbraco.Core/Services/MemberGroupService.cs b/src/Umbraco.Core/Services/MemberGroupService.cs index bb3e0661c5..1e99caa7f4 100644 --- a/src/Umbraco.Core/Services/MemberGroupService.cs +++ b/src/Umbraco.Core/Services/MemberGroupService.cs @@ -71,13 +71,10 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (raiseEvents) + if (raiseEvents && uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(memberGroup))) { - if (uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(memberGroup))) - { - uow.Commit(); - return; - } + uow.Commit(); + return; } var repository = RepositoryFactory.CreateMemberGroupRepository(uow); diff --git a/src/Umbraco.Core/Services/MemberService.cs b/src/Umbraco.Core/Services/MemberService.cs index 848c582604..70535b24ab 100644 --- a/src/Umbraco.Core/Services/MemberService.cs +++ b/src/Umbraco.Core/Services/MemberService.cs @@ -584,10 +584,11 @@ namespace Umbraco.Core.Services Mandate.ParameterCondition(pageIndex >= 0, "pageIndex"); Mandate.ParameterCondition(pageSize > 0, "pageSize"); - var uow = UowProvider.GetUnitOfWork(); - using (var repository = RepositoryFactory.CreateMemberRepository(uow)) + using (var uow = UowProvider.GetUnitOfWork()) { + var repository = RepositoryFactory.CreateMemberRepository(uow); var contents = repository.GetPagedXmlEntriesByPath("-1", pageIndex, pageSize, null, out totalRecords); + uow.Commit(); return contents; } } @@ -936,6 +937,7 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { Delete(uow, member); + uow.Commit(); } } @@ -1010,14 +1012,12 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (raiseEvents) + if (raiseEvents && uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(asArray))) { - if (uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(asArray))) - { - uow.Commit(); - return; - } + uow.Commit(); + return; } + var repository = RepositoryFactory.CreateMemberRepository(uow); foreach (var member in asArray) { @@ -1057,7 +1057,7 @@ namespace Umbraco.Core.Services public IEnumerable GetAllRoles() { - using (var uow = UowProvider.GetUnitOfWork()) + using (var uow = UowProvider.GetUnitOfWork(readOnly: true)) { var repository = RepositoryFactory.CreateMemberGroupRepository(uow); var result = repository.GetAll(); diff --git a/src/Umbraco.Core/Services/PublicAccessService.cs b/src/Umbraco.Core/Services/PublicAccessService.cs index 64041b419f..660642416b 100644 --- a/src/Umbraco.Core/Services/PublicAccessService.cs +++ b/src/Umbraco.Core/Services/PublicAccessService.cs @@ -220,7 +220,10 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { if (uow.Events.DispatchCancelable(Saving, this, new SaveEventArgs(entry, evtMsgs))) + { + uow.Commit(); return OperationStatus.Cancelled(evtMsgs); + } var repo = RepositoryFactory.CreatePublicAccessRepository(uow); repo.AddOrUpdate(entry); @@ -243,7 +246,10 @@ namespace Umbraco.Core.Services using (var uow = UowProvider.GetUnitOfWork()) { if (uow.Events.DispatchCancelable(Deleting, this, new DeleteEventArgs(entry, evtMsgs))) + { + uow.Commit(); return OperationStatus.Cancelled(evtMsgs); + } var repo = RepositoryFactory.CreatePublicAccessRepository(uow); repo.Delete(entry); diff --git a/src/Umbraco.Core/Services/RelationService.cs b/src/Umbraco.Core/Services/RelationService.cs index 5d1dc6724f..39dc908fde 100644 --- a/src/Umbraco.Core/Services/RelationService.cs +++ b/src/Umbraco.Core/Services/RelationService.cs @@ -423,8 +423,6 @@ namespace Umbraco.Core.Services uow.Events.Dispatch(SavedRelation, this, new SaveEventArgs(relation, false)); return relation; } - - } /// @@ -456,8 +454,6 @@ namespace Umbraco.Core.Services uow.Events.Dispatch(SavedRelation, this, new SaveEventArgs(relation, false)); return relation; } - - } /// @@ -582,8 +578,6 @@ namespace Umbraco.Core.Services uow.Commit(); uow.Events.Dispatch(SavedRelation, this, new SaveEventArgs(relation, false)); } - - } /// @@ -604,8 +598,6 @@ namespace Umbraco.Core.Services uow.Commit(); uow.Events.Dispatch(SavedRelationType, this, new SaveEventArgs(relationType, false)); } - - } /// @@ -625,9 +617,7 @@ namespace Umbraco.Core.Services repository.Delete(relation); uow.Commit(); uow.Events.Dispatch(DeletedRelation, this, new DeleteEventArgs(relation, false)); - } - } /// @@ -647,9 +637,7 @@ namespace Umbraco.Core.Services repository.Delete(relationType); uow.Commit(); uow.Events.Dispatch(DeletedRelationType, this, new DeleteEventArgs(relationType, false)); - } - } /// @@ -671,9 +659,7 @@ namespace Umbraco.Core.Services } uow.Commit(); uow.Events.Dispatch(DeletedRelation, this, new DeleteEventArgs(relations, false)); - } - } #region Private Methods diff --git a/src/Umbraco.Core/Services/UserService.cs b/src/Umbraco.Core/Services/UserService.cs index a2a8620ab0..dd9892e47c 100644 --- a/src/Umbraco.Core/Services/UserService.cs +++ b/src/Umbraco.Core/Services/UserService.cs @@ -303,9 +303,7 @@ namespace Umbraco.Core.Services repository.Delete(user); uow.Commit(); uow.Events.Dispatch(DeletedUser, this, new DeleteEventArgs(user, false)); - } - } } @@ -701,14 +699,12 @@ namespace Umbraco.Core.Services { using (var uow = UowProvider.GetUnitOfWork()) { - if (raiseEvents) + if (raiseEvents && uow.Events.DispatchCancelable(SavingUserType, this, new SaveEventArgs(userType))) { - if (uow.Events.DispatchCancelable(SavingUserType, this, new SaveEventArgs(userType))) - { - uow.Commit(); - return; - } + uow.Commit(); + return; } + var repository = RepositoryFactory.CreateUserTypeRepository(uow); repository.AddOrUpdate(userType); uow.Commit();