From 632addf8e84491c54cf4ca1a19cdac595403f214 Mon Sep 17 00:00:00 2001 From: Mohamed Nazem <109486038+nazem0@users.noreply.github.com> Date: Wed, 19 Aug 2026 17:35:23 +0300 Subject: [PATCH] checking Use(Object/List)ProjectionMapper before resolving the mapper --- .../Services/AbstractKeyReadOnlyAppService.cs | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AbstractKeyReadOnlyAppService.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AbstractKeyReadOnlyAppService.cs index 0c53ac2705..f70953b2ac 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AbstractKeyReadOnlyAppService.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AbstractKeyReadOnlyAppService.cs @@ -44,11 +44,9 @@ public abstract class AbstractKeyReadOnlyAppService? ObjectProjectionMapper => - LazyServiceProvider.LazyGetService>(); + protected virtual IQueryProjectionMapper? ObjectProjectionMapper { get; } - protected virtual IQueryProjectionMapper? ListProjectionMapper => - LazyServiceProvider.LazyGetService>(); + protected virtual IQueryProjectionMapper? ListProjectionMapper { get; } protected virtual bool UseObjectProjectionMapper => ObjectProjectionMapper != null; @@ -59,20 +57,28 @@ public abstract class AbstractKeyReadOnlyAppService repository) { ReadOnlyRepository = repository; + + ObjectProjectionMapper = + LazyServiceProvider.LazyGetService< + IQueryProjectionMapper>(); + + ListProjectionMapper = + LazyServiceProvider.LazyGetService< + IQueryProjectionMapper>(); } public virtual async Task GetAsync(TKey id) { await CheckGetPolicyAsync(); - var projectionMapper = ObjectProjectionMapper; - - if (UseObjectProjectionMapper && projectionMapper != null) + if (UseObjectProjectionMapper && ObjectProjectionMapper != null) { var query = await GetEntityByIdQueryAsync(id); - var dto = - await AsyncExecuter.FirstOrDefaultAsync(projectionMapper.ProjectTo(query)) + var dto = + await AsyncExecuter.FirstOrDefaultAsync( + ObjectProjectionMapper.ProjectTo(query) + ) ?? throw new EntityNotFoundException(typeof(TEntity), id); return dto; @@ -97,12 +103,10 @@ public abstract class AbstractKeyReadOnlyAppService