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