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 f70953b2ac..0c53ac2705 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,9 +44,11 @@ public abstract class AbstractKeyReadOnlyAppService? ObjectProjectionMapper { get; } + protected virtual IQueryProjectionMapper? ObjectProjectionMapper => + LazyServiceProvider.LazyGetService>(); - protected virtual IQueryProjectionMapper? ListProjectionMapper { get; } + protected virtual IQueryProjectionMapper? ListProjectionMapper => + LazyServiceProvider.LazyGetService>(); protected virtual bool UseObjectProjectionMapper => ObjectProjectionMapper != null; @@ -57,28 +59,20 @@ public abstract class AbstractKeyReadOnlyAppService repository) { ReadOnlyRepository = repository; - - ObjectProjectionMapper = - LazyServiceProvider.LazyGetService< - IQueryProjectionMapper>(); - - ListProjectionMapper = - LazyServiceProvider.LazyGetService< - IQueryProjectionMapper>(); } public virtual async Task GetAsync(TKey id) { await CheckGetPolicyAsync(); - if (UseObjectProjectionMapper && ObjectProjectionMapper != null) + var projectionMapper = ObjectProjectionMapper; + + if (UseObjectProjectionMapper && projectionMapper != null) { var query = await GetEntityByIdQueryAsync(id); - var dto = - await AsyncExecuter.FirstOrDefaultAsync( - ObjectProjectionMapper.ProjectTo(query) - ) + var dto = + await AsyncExecuter.FirstOrDefaultAsync(projectionMapper.ProjectTo(query)) ?? throw new EntityNotFoundException(typeof(TEntity), id); return dto; @@ -103,10 +97,12 @@ public abstract class AbstractKeyReadOnlyAppService