private ICollection <TRelationshipEntity> GetRelationshipCollection(TRelationshipDTO relationship)
        {
            var parentId     = ParentDTOKeySelector(relationship);
            var includes     = AdditionalParentIncludes.Concat(new[] { ConvertToIncludesExpression(RelationshipCollectionSelector) }).ToArray();
            var parentEntity = ParentRepository.GetById(parentId, includes);

            ValidateModifyPermissions(parentEntity);

            var relationshipCollection = RelationshipCollectionSelector.Compile()(parentEntity);

            return(relationshipCollection);
        }
        public TRelationshipDTO GetDetail(TKey id)
        {
            using (UnitOfWorkProvider.Create())
            {
                var entity = Repository.GetById(id);
                if (entity == null)
                {
                    return(default(TRelationshipDTO));
                }

                var parentId     = ParentEntityKeySelector(entity);
                var includes     = AdditionalParentIncludes.Concat(new [] { ConvertToIncludesExpression(RelationshipCollectionSelector) }).ToArray();
                var parentEntity = ParentRepository.GetById(parentId, includes);
                ValidateReadPermissions(parentEntity);
                return(entityMapper.MapToDTO(entity));
            }
        }