diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs index 81f2bde2d7..02299556ac 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs @@ -1144,10 +1144,12 @@ namespace Umbraco.Core.Persistence.Repositories.Implement .InnerJoin() .On(x => x.NodeId, x => x.NodeId) .Where(x => x.Current == SqlTemplate.Arg("current")) - .Where(x => x.NodeObjectType == SqlTemplate.Arg("nodeObjectType") && x.ParentId == SqlTemplate.Arg("parentId")) + .Where(x => x.NodeObjectType == SqlTemplate.Arg("nodeObjectType") + && x.ParentId == SqlTemplate.Arg("parentId") + && x.NodeId != SqlTemplate.Arg($"{Constants.DatabaseSchema.Tables.Node}.id")) .OrderBy(x => x.LanguageId)); - var sql = template.Sql(true, NodeObjectTypeId, content.ParentId); + var sql = template.Sql(true, NodeObjectTypeId, content.ParentId, content.Id); var names = Database.Fetch(sql) .GroupBy(x => x.LanguageId) .ToDictionary(x => x.Key, x => x); diff --git a/src/Umbraco.Tests/Services/ContentServiceTests.cs b/src/Umbraco.Tests/Services/ContentServiceTests.cs index 11f9502263..34cab4f970 100644 --- a/src/Umbraco.Tests/Services/ContentServiceTests.cs +++ b/src/Umbraco.Tests/Services/ContentServiceTests.cs @@ -2565,7 +2565,10 @@ namespace Umbraco.Tests.Services var child = new Content(null, content, contentType); child.SetName("child", langUk.IsoCode); contentService.Save(child); + Assert.AreEqual("child" + (i == 0 ? "" : " (" + (i).ToString() + ")"), child.GetName(langUk.IsoCode)); + //Save it again to ensure that the unique check is not performed again against it's own name + contentService.Save(child); Assert.AreEqual("child" + (i == 0 ? "" : " (" + (i).ToString() + ")"), child.GetName(langUk.IsoCode)); } }