diff --git a/src/Umbraco.Core/Persistence/Repositories/IEntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IEntityRepository.cs
index a6a1691347..102dc7c81a 100644
--- a/src/Umbraco.Core/Persistence/Repositories/IEntityRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/IEntityRepository.cs
@@ -55,8 +55,9 @@ namespace Umbraco.Core.Persistence.Repositories
/// A collection of mixed entity types which would be of type , , ,
///
///
- IEnumerable GetPagedResultsByQuery(IQuery query, Guid[] objectTypes, long pageIndex, int pageSize, out long totalRecords,
- IQuery filter, Ordering ordering);
+ IEnumerable GetPagedResultsByQuery(
+ IQuery query, Guid[] objectTypes, long pageIndex, int pageSize, out long totalRecords,
+ IQuery filter, Ordering ordering, IQuery relationQuery = null);
///
/// Gets paged entities for a query and a specific object type
diff --git a/src/Umbraco.Core/Persistence/Repositories/IRelationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/IRelationRepository.cs
index 9a2e42568e..9a99cb2a77 100644
--- a/src/Umbraco.Core/Persistence/Repositories/IRelationRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/IRelationRepository.cs
@@ -1,5 +1,7 @@
using System.Collections.Generic;
using Umbraco.Core.Models;
+using Umbraco.Core.Models.Entities;
+using Umbraco.Core.Persistence.Querying;
namespace Umbraco.Core.Persistence.Repositories
{
@@ -13,5 +15,7 @@ namespace Umbraco.Core.Persistence.Repositories
/// A list of relation types to match for deletion, if none are specified then all relations for this parent id are deleted
///
void DeleteByParent(int parentId, params string[] relationTypeAliases);
+
+ IEnumerable GetPagedParentEntitiesByChildId(int childId, long pageIndex, int pageSize, out long totalRecords);
}
}
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/EntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/EntityRepository.cs
index 2b68c8fe19..9b05e95a17 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/EntityRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/EntityRepository.cs
@@ -82,24 +82,40 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
// get a page of entities
public IEnumerable GetPagedResultsByQuery(IQuery query, Guid[] objectTypes, long pageIndex, int pageSize, out long totalRecords,
- IQuery filter, Ordering ordering)
+ IQuery filter, Ordering ordering, IQuery relationQuery = null)
{
var isContent = objectTypes.Any(objectType => objectType == Constants.ObjectTypes.Document || objectType == Constants.ObjectTypes.DocumentBlueprint);
var isMedia = objectTypes.Any(objectType => objectType == Constants.ObjectTypes.Media);
var isMember = objectTypes.Any(objectType => objectType == Constants.ObjectTypes.Member);
- var sql = GetBaseWhere(isContent, isMedia, isMember, false, x =>
+ var sql = GetBaseWhere(isContent, isMedia, isMember, false, s =>
{
- if (filter == null) return;
- foreach (var filterClause in filter.GetWhereClauses())
- x.Where(filterClause.Item1, filterClause.Item2);
+ if (relationQuery != null)
+ {
+ // add left joins for relation tables (this joins on both child or parent, so beware that this will normally return entities for
+ // both sides of the relation type unless the IUmbracoEntity query passed in filters one side out).
+ s.LeftJoin().On((left, right) => left.NodeId == right.ChildId || left.NodeId == right.ParentId);
+ s.LeftJoin().On((left, right) => left.RelationType == right.Id);
+
+ // append the relations wheres
+ foreach (var relClause in relationQuery.GetWhereClauses())
+ s.Where(relClause.Item1, relClause.Item2);
+ }
+
+ if (filter != null)
+ {
+ foreach (var filterClause in filter.GetWhereClauses())
+ s.Where(filterClause.Item1, filterClause.Item2);
+ }
+
+
}, objectTypes);
ordering = ordering ?? Ordering.ByDefault();
var translator = new SqlTranslator(sql, query);
sql = translator.Translate();
- sql = AddGroupBy(true, true, true, sql, ordering.IsEmpty);
+ sql = AddGroupBy(isContent, isMedia, isMember, sql, ordering.IsEmpty);
if (!ordering.IsEmpty)
{
@@ -457,8 +473,12 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
// for a given object type, with a given filter
protected Sql GetBaseWhere(bool isContent, bool isMedia, bool isMember, bool isCount, Action> filter, Guid[] objectTypes)
{
- return GetBase(isContent, isMedia, isMember, filter, isCount)
- .WhereIn(x => x.NodeObjectType, objectTypes);
+ var sql = GetBase(isContent, isMedia, isMember, filter, isCount);
+ if (objectTypes.Length > 0)
+ {
+ sql.WhereIn(x => x.NodeObjectType, objectTypes);
+ }
+ return sql;
}
// gets the base SELECT + FROM + WHERE sql
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs
index e6c4c6fd7e..530872203c 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs
@@ -11,6 +11,7 @@ using Umbraco.Core.Persistence.Factories;
using Umbraco.Core.Persistence.Querying;
using Umbraco.Core.Persistence.SqlSyntax;
using Umbraco.Core.Scoping;
+using Umbraco.Core.Services;
using static Umbraco.Core.Persistence.NPocoSqlExtensions.Statics;
namespace Umbraco.Core.Persistence.Repositories.Implement
@@ -21,11 +22,13 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
internal class RelationRepository : NPocoRepositoryBase, IRelationRepository
{
private readonly IRelationTypeRepository _relationTypeRepository;
+ private readonly IEntityRepository _entityRepository;
- public RelationRepository(IScopeAccessor scopeAccessor, ILogger logger, IRelationTypeRepository relationTypeRepository)
+ public RelationRepository(IScopeAccessor scopeAccessor, ILogger logger, IRelationTypeRepository relationTypeRepository, IEntityRepository entityRepository)
: base(scopeAccessor, AppCaches.NoCache, logger)
{
_relationTypeRepository = relationTypeRepository;
+ _entityRepository = entityRepository;
}
#region Overrides of RepositoryBase
@@ -156,6 +159,19 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
#endregion
+ public IEnumerable GetPagedParentEntitiesByChildId(int childId, long pageIndex, int pageSize, out long totalRecords)
+ {
+ // Create a query to match the child id
+ var relQuery = Query().Where(r => r.ChildId == childId);
+
+ // Because of the way that the entity repository joins relations (on both child or parent) we need to add
+ // a clause to filter out the child entity from being returned from the results
+ var entityQuery = Query().Where(e => e.Id != childId);
+
+ return _entityRepository.GetPagedResultsByQuery(entityQuery, Array.Empty(), pageIndex, pageSize, out totalRecords, null, null, relQuery);
+
+ }
+
public void DeleteByParent(int parentId, params string[] relationTypeAliases)
{
var subQuery = Sql().Select(x => x.Id)
diff --git a/src/Umbraco.Core/Services/IRelationService.cs b/src/Umbraco.Core/Services/IRelationService.cs
index 49fa21af2b..95f04b6df2 100644
--- a/src/Umbraco.Core/Services/IRelationService.cs
+++ b/src/Umbraco.Core/Services/IRelationService.cs
@@ -189,6 +189,16 @@ namespace Umbraco.Core.Services
/// An enumerable list of
IEnumerable GetParentEntitiesFromRelations(IEnumerable relations);
+ ///
+ /// Returns paged parent entities for a related child id
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ IEnumerable GetPagedParentEntitiesByChildId(int id, long pageIndex, int pageSize, out long totalChildren);
+
///
/// Gets the Parent and Child objects from a list of Relations as a list of objects.
///
diff --git a/src/Umbraco.Core/Services/Implement/RelationService.cs b/src/Umbraco.Core/Services/Implement/RelationService.cs
index 490f36e7c7..56bf2bba06 100644
--- a/src/Umbraco.Core/Services/Implement/RelationService.cs
+++ b/src/Umbraco.Core/Services/Implement/RelationService.cs
@@ -263,6 +263,17 @@ namespace Umbraco.Core.Services.Implement
}
}
+ ///
+ public IEnumerable GetPagedParentEntitiesByChildId(int id, long pageIndex, int pageSize, out long totalChildren)
+ {
+ using (var scope = ScopeProvider.CreateScope(autoComplete: true))
+ {
+ //var query = Query().Where(x => x.ChildId == id);
+ return _relationRepository.GetPagedParentEntitiesByChildId(id, pageIndex, pageSize, out totalChildren);
+ }
+ throw new NotImplementedException();
+ }
+
///
public IEnumerable> GetEntitiesFromRelations(IEnumerable relations)
{
diff --git a/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs
index 07ca7d238d..8ed935795d 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs
@@ -37,7 +37,8 @@ namespace Umbraco.Tests.Persistence.Repositories
contentTypeRepository = new ContentTypeRepository(scopeAccessor, AppCaches.Disabled, Logger, commonRepository, langRepository);
var languageRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, Logger);
var relationTypeRepository = new RelationTypeRepository(scopeAccessor, AppCaches.Disabled, Logger);
- var relationRepository = new RelationRepository(scopeAccessor, Logger, relationTypeRepository);
+ var entityRepository = new EntityRepository(scopeAccessor);
+ var relationRepository = new RelationRepository(scopeAccessor, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
var repository = new DocumentRepository(scopeAccessor, AppCaches.Disabled, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors);
return repository;
diff --git a/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs
index 45dc3de2e3..3a36a647f0 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs
@@ -70,7 +70,8 @@ namespace Umbraco.Tests.Persistence.Repositories
var languageRepository = new LanguageRepository(scopeAccessor, appCaches, Logger);
contentTypeRepository = new ContentTypeRepository(scopeAccessor, appCaches, Logger, commonRepository, languageRepository);
var relationTypeRepository = new RelationTypeRepository(scopeAccessor, AppCaches.Disabled, Logger);
- var relationRepository = new RelationRepository(scopeAccessor, Logger, relationTypeRepository);
+ var entityRepository = new EntityRepository(scopeAccessor);
+ var relationRepository = new RelationRepository(scopeAccessor, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
var repository = new DocumentRepository(scopeAccessor, appCaches, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors);
return repository;
diff --git a/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs
index 27ea92fed6..ad27aed309 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs
@@ -28,7 +28,8 @@ namespace Umbraco.Tests.Persistence.Repositories
languageRepository = new LanguageRepository(accessor, Core.Cache.AppCaches.Disabled, Logger);
contentTypeRepository = new ContentTypeRepository(accessor, Core.Cache.AppCaches.Disabled, Logger, commonRepository, languageRepository);
var relationTypeRepository = new RelationTypeRepository(accessor, Core.Cache.AppCaches.Disabled, Logger);
- var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository);
+ var entityRepository = new EntityRepository(accessor);
+ var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
documentRepository = new DocumentRepository(accessor, Core.Cache.AppCaches.Disabled, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors);
var domainRepository = new DomainRepository(accessor, Core.Cache.AppCaches.Disabled, Logger);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
index 93587506e8..ced0ee75e9 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
@@ -43,7 +43,8 @@ namespace Umbraco.Tests.Persistence.Repositories
mediaTypeRepository = new MediaTypeRepository(scopeAccessor, appCaches, Logger, commonRepository, languageRepository);
var tagRepository = new TagRepository(scopeAccessor, appCaches, Logger);
var relationTypeRepository = new RelationTypeRepository(scopeAccessor, AppCaches.Disabled, Logger);
- var relationRepository = new RelationRepository(scopeAccessor, Logger, relationTypeRepository);
+ var entityRepository = new EntityRepository(scopeAccessor);
+ var relationRepository = new RelationRepository(scopeAccessor, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
var repository = new MediaRepository(scopeAccessor, appCaches, Logger, mediaTypeRepository, tagRepository, Mock.Of(), relationRepository, relationTypeRepository, propertyEditors);
return repository;
diff --git a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs
index 72b4691639..7531d92b49 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs
@@ -37,7 +37,8 @@ namespace Umbraco.Tests.Persistence.Repositories
memberGroupRepository = new MemberGroupRepository(accessor, AppCaches.Disabled, Logger);
var tagRepo = new TagRepository(accessor, AppCaches.Disabled, Logger);
var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger);
- var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository);
+ var entityRepository = new EntityRepository(accessor);
+ var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
var repository = new MemberRepository(accessor, AppCaches.Disabled, Logger, memberTypeRepository, memberGroupRepository, tagRepo, Mock.Of(), relationRepository, relationTypeRepository, propertyEditors);
return repository;
diff --git a/src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs
index 84a0f608f7..9a65bde41f 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs
@@ -312,7 +312,8 @@ namespace Umbraco.Tests.Persistence.Repositories
var languageRepository = new LanguageRepository(accessor, AppCaches, Logger);
contentTypeRepository = new ContentTypeRepository(accessor, AppCaches, Logger, commonRepository, languageRepository);
var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches, Logger);
- var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository);
+ var entityRepository = new EntityRepository(accessor);
+ var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
var repository = new DocumentRepository(accessor, AppCaches, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors);
return repository;
diff --git a/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs
index 8d9f82a776..b67a662123 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.Linq;
using Moq;
using NUnit.Framework;
@@ -6,6 +7,7 @@ using Umbraco.Core;
using Umbraco.Core.Cache;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
+using Umbraco.Core.Models.Entities;
using Umbraco.Core.Persistence.Dtos;
using Umbraco.Core.Persistence.Repositories;
using Umbraco.Core.Persistence.Repositories.Implement;
@@ -31,7 +33,8 @@ namespace Umbraco.Tests.Persistence.Repositories
{
var accessor = (IScopeAccessor) provider;
relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Mock.Of());
- var repository = new RelationRepository(accessor, Mock.Of(), relationTypeRepository);
+ var entityRepository = new EntityRepository(accessor);
+ var repository = new RelationRepository(accessor, Mock.Of(), relationTypeRepository, entityRepository);
return repository;
}
@@ -168,6 +171,73 @@ namespace Umbraco.Tests.Persistence.Repositories
}
}
+ [Test]
+ public void Get_Paged_Parent_Entities_By_Child_Id()
+ {
+ //Create content
+ var createdContent = new List();
+ var contentType = MockedContentTypes.CreateBasicContentType("blah");
+ ServiceContext.ContentTypeService.Save(contentType);
+ for (int i = 0; i < 10; i++)
+ {
+ var c1 = MockedContent.CreateBasicContent(contentType);
+ ServiceContext.ContentService.Save(c1);
+ createdContent.Add(c1);
+ }
+
+ //Create media
+ var createdMedia = new List();
+ var imageType = MockedContentTypes.CreateImageMediaType("myImage");
+ ServiceContext.MediaTypeService.Save(imageType);
+ for (int i = 0; i < 10; i++)
+ {
+ var c1 = MockedMedia.CreateMediaImage(imageType, -1);
+ ServiceContext.MediaService.Save(c1);
+ createdMedia.Add(c1);
+ }
+
+ // Create members
+ var memberType = MockedContentTypes.CreateSimpleMemberType("simple");
+ ServiceContext.MemberTypeService.Save(memberType);
+ var createdMembers = MockedMember.CreateSimpleMember(memberType, 10).ToList();
+ ServiceContext.MemberService.Save(createdMembers);
+
+ var relType = ServiceContext.RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelatedMediaAlias);
+
+ // Relate content to media
+ foreach(var content in createdContent)
+ foreach(var media in createdMedia)
+ ServiceContext.RelationService.Relate(content.Id, media.Id, relType);
+ // Relate members to media
+ foreach (var member in createdMembers)
+ foreach (var media in createdMedia)
+ ServiceContext.RelationService.Relate(member.Id, media.Id, relType);
+
+ var provider = TestObjects.GetScopeProvider(Logger);
+ using (var scope = provider.CreateScope())
+ {
+ var repository = CreateRepository(provider, out var relationTypeRepository);
+
+ // Get parent entities for child id
+ var parents = repository.GetPagedParentEntitiesByChildId(createdMedia[0].Id, 0, 11, out var totalRecords).ToList();
+ Assert.AreEqual(20, totalRecords);
+ Assert.AreEqual(11, parents.Count);
+
+ //add the next page
+ parents.AddRange(repository.GetPagedParentEntitiesByChildId(createdMedia[0].Id, 1, 11, out totalRecords));
+ Assert.AreEqual(20, totalRecords);
+ Assert.AreEqual(20, parents.Count);
+
+ var contentEntities = parents.OfType().ToList();
+ var mediaEntities = parents.OfType().ToList();
+ var memberEntities = parents.OfType().ToList();
+
+ Assert.AreEqual(10, contentEntities.Count);
+ Assert.AreEqual(0, mediaEntities.Count);
+ Assert.AreEqual(10, memberEntities.Count);
+ }
+ }
+
[Test]
public void Can_Perform_Exists_On_RelationRepository()
{
@@ -274,8 +344,10 @@ namespace Umbraco.Tests.Persistence.Repositories
var provider = TestObjects.GetScopeProvider(Logger);
using (var scope = provider.CreateScope())
{
- var relationTypeRepository = new RelationTypeRepository((IScopeAccessor) provider, AppCaches.Disabled, Mock.Of());
- var relationRepository = new RelationRepository((IScopeAccessor) provider, Mock.Of(), relationTypeRepository);
+ var accessor = (IScopeAccessor)provider;
+ var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Mock.Of());
+ var entityRepository = new EntityRepository(accessor);
+ var relationRepository = new RelationRepository(accessor, Mock.Of(), relationTypeRepository, entityRepository);
relationTypeRepository.Save(relateContent);
relationTypeRepository.Save(relateContentType);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs
index a4155639be..fe0db4563a 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs
@@ -961,7 +961,8 @@ namespace Umbraco.Tests.Persistence.Repositories
var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, Logger);
contentTypeRepository = new ContentTypeRepository(accessor, AppCaches.Disabled, Logger, commonRepository, languageRepository);
var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger);
- var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository);
+ var entityRepository = new EntityRepository(accessor);
+ var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
var repository = new DocumentRepository(accessor, AppCaches.Disabled, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors);
return repository;
@@ -976,7 +977,8 @@ namespace Umbraco.Tests.Persistence.Repositories
var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, Logger);
mediaTypeRepository = new MediaTypeRepository(accessor, AppCaches.Disabled, Logger, commonRepository, languageRepository);
var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger);
- var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository);
+ var entityRepository = new EntityRepository(accessor);
+ var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
var repository = new MediaRepository(accessor, AppCaches.Disabled, Logger, mediaTypeRepository, tagRepository, Mock.Of(), relationRepository, relationTypeRepository, propertyEditors);
return repository;
diff --git a/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs
index e996c4f6a1..4bf50c6ffd 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs
@@ -243,7 +243,8 @@ namespace Umbraco.Tests.Persistence.Repositories
var languageRepository = new LanguageRepository(ScopeProvider, AppCaches.Disabled, Logger);
var contentTypeRepository = new ContentTypeRepository(ScopeProvider, AppCaches.Disabled, Logger, commonRepository, languageRepository);
var relationTypeRepository = new RelationTypeRepository(ScopeProvider, AppCaches.Disabled, Logger);
- var relationRepository = new RelationRepository(ScopeProvider, Logger, relationTypeRepository);
+ var entityRepository = new EntityRepository(ScopeProvider);
+ var relationRepository = new RelationRepository(ScopeProvider, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
var contentRepo = new DocumentRepository(ScopeProvider, AppCaches.Disabled, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors);
diff --git a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs
index 0438e2193b..f4ab387683 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs
@@ -32,7 +32,8 @@ namespace Umbraco.Tests.Persistence.Repositories
mediaTypeRepository = new MediaTypeRepository(accessor, AppCaches, Mock.Of(), commonRepository, languageRepository);
var tagRepository = new TagRepository(accessor, AppCaches, Mock.Of());
var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger);
- var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository);
+ var entityRepository = new EntityRepository(accessor);
+ var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
var repository = new MediaRepository(accessor, AppCaches, Mock.Of(), mediaTypeRepository, tagRepository, Mock.Of(), relationRepository, relationTypeRepository, propertyEditors);
return repository;
@@ -53,7 +54,8 @@ namespace Umbraco.Tests.Persistence.Repositories
var languageRepository = new LanguageRepository(accessor, AppCaches, Logger);
contentTypeRepository = new ContentTypeRepository(accessor, AppCaches, Logger, commonRepository, languageRepository);
var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger);
- var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository);
+ var entityRepository = new EntityRepository(accessor);
+ var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
var repository = new DocumentRepository(accessor, AppCaches, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors);
return repository;
diff --git a/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs b/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs
index d7729c19c1..763635c393 100644
--- a/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs
+++ b/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs
@@ -42,15 +42,17 @@ namespace Umbraco.Tests.Services
private DocumentRepository CreateDocumentRepository(IScopeProvider provider)
{
- var tRepository = new TemplateRepository((IScopeAccessor)provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
- var tagRepo = new TagRepository((IScopeAccessor)provider, AppCaches.Disabled, Logger);
- var commonRepository = new ContentTypeCommonRepository((IScopeAccessor)provider, tRepository, AppCaches);
- var languageRepository = new LanguageRepository((IScopeAccessor)provider, AppCaches.Disabled, Logger);
- var ctRepository = new ContentTypeRepository((IScopeAccessor)provider, AppCaches.Disabled, Logger, commonRepository, languageRepository);
- var relationTypeRepository = new RelationTypeRepository((IScopeAccessor)provider, AppCaches.Disabled, Logger);
- var relationRepository = new RelationRepository((IScopeAccessor)provider, Logger, relationTypeRepository);
+ var accessor = (IScopeAccessor)provider;
+ var tRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock());
+ var tagRepo = new TagRepository(accessor, AppCaches.Disabled, Logger);
+ var commonRepository = new ContentTypeCommonRepository(accessor, tRepository, AppCaches);
+ var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, Logger);
+ var ctRepository = new ContentTypeRepository(accessor, AppCaches.Disabled, Logger, commonRepository, languageRepository);
+ var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger);
+ var entityRepository = new EntityRepository(accessor);
+ var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
- var repository = new DocumentRepository((IScopeAccessor)provider, AppCaches.Disabled, Logger, ctRepository, tRepository, tagRepo, languageRepository, relationRepository, relationTypeRepository, propertyEditors);
+ var repository = new DocumentRepository(accessor, AppCaches.Disabled, Logger, ctRepository, tRepository, tagRepo, languageRepository, relationRepository, relationTypeRepository, propertyEditors);
return repository;
}
diff --git a/src/Umbraco.Tests/Services/ContentServiceTests.cs b/src/Umbraco.Tests/Services/ContentServiceTests.cs
index 89873b5880..88b5cb5c34 100644
--- a/src/Umbraco.Tests/Services/ContentServiceTests.cs
+++ b/src/Umbraco.Tests/Services/ContentServiceTests.cs
@@ -3208,7 +3208,8 @@ namespace Umbraco.Tests.Services
var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, Logger);
contentTypeRepository = new ContentTypeRepository(accessor, AppCaches.Disabled, Logger, commonRepository, languageRepository);
var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger);
- var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository);
+ var entityRepository = new EntityRepository(accessor);
+ var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository);
var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())));
var repository = new DocumentRepository(accessor, AppCaches.Disabled, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors);
return repository;