Open Closed

Unable to load the Tenants in Saas page. Volo.Saas.Tenants.Tenant -> Volo.Saas.Host.Dtos.SaasTenantDto mapping issue #3794


User avatar
0
Yaduraj created
  • ABP Framework version: 4.3.1
  • UI type: Angular / .Net Core
  • DB provider: EF Core / PostgreSql
  • Exception message and stack trace:

Timestamp - 09/29/2022 06:31:39 +00:00 | Level - Error | Message Error mapping types. Mapping types: Object -> List1 System.Object -> System.Collections.Generic.List`1[[Volo.Saas.Host.Dtos.SaasTenantDto, Volo.Saas.Host.Application.Contracts, Version=4.3.1.0, Culture=neutral, PublicKeyToken=null]] { "SourceContext": { "Value": "Volo.Abp.AspNetCore.Mvc.ExceptionHandling.AbpExceptionFilter" }, "ActionId": { "Value": "72a05745-907d-44f5-a405-7ec0d6cd851a" }, "ActionName": { "Value": "Volo.Saas.Host.TenantController.GetListAsync (Volo.Saas.Host.HttpApi)" }, "RequestId": { "Value": "0HML1D7DDQJB6:00000002" }, "RequestPath": { "Value": "/api/saas/tenants" }, "ConnectionId": { "Value": "0HML1D7DDQJB6" } } Exception - AutoMapper.AutoMapperMappingException: Error mapping types.

Mapping types: Object -> List1 System.Object -> System.Collections.Generic.List1[[Volo.Saas.Host.Dtos.SaasTenantDto, Volo.Saas.Host.Application.Contracts, Version=4.3.1.0, Culture=neutral, PublicKeyToken=null]] ---> AutoMapper.AutoMapperMappingException: Error mapping types.

Mapping types: Tenant -> SaasTenantDto Volo.Saas.Tenants.Tenant -> Volo.Saas.Host.Dtos.SaasTenantDto

Type Map configuration: Tenant -> SaasTenantDto Volo.Saas.Tenants.Tenant -> Volo.Saas.Host.Dtos.SaasTenantDto

Destination Member: ExtraProperties

---> System.ArgumentNullException: Value cannot be null. (Parameter 'sourceDictionary') at Volo.Abp.Check.NotNull[T](T value, String parameterName) at Volo.Abp.ObjectExtending.ExtensibleObjectMapper.MapExtraPropertiesTo(Type sourceType, Type destinationType, Dictionary2 sourceDictionary, Dictionary2 destinationDictionary, Nullable1 definitionChecks, String[] ignoredProperties) at Volo.Abp.ObjectExtending.ExtensibleObjectMapper.MapExtraPropertiesTo[TSource,TDestination](Dictionary2 sourceDictionary, Dictionary2 destinationDictionary, Nullable1 definitionChecks, String[] ignoredProperties) at AutoMapper.AbpAutoMapperExtensibleDtoExtensions.<>c__DisplayClass0_02.&lt;MapExtraProperties&gt;b__3(TSource source, TDestination destination, ExtraPropertyDictionary extraProps) at lambda_method5808(Closure , Object , List1 , ResolutionContext ) --- End of inner exception stack trace --- at lambda_method5808(Closure , Object , List1 , ResolutionContext ) --- End of inner exception stack trace --- at lambda_method5808(Closure , Object , List1 , ResolutionContext ) at Volo.Abp.ObjectMapping.DefaultObjectMapper.Map[TSource,TDestination](TSource source) at Volo.Saas.Host.TenantAppService.GetListAsync(GetTenantsInput input) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Authorization.AuthorizationInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Auditing.AuditingInterceptor.ProceedByLoggingAsync(IAbpMethodInvocation invocation, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope) at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.GlobalFeatures.GlobalFeatureInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at lambda_method5764(Closure , Object ) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.&lt;InvokeActionMethodAsync&gt;g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.

  • Steps to reproduce the issue:" NA

4 Answer(s)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Please try to add the below AutoMapper config.

    CreateMap<Tenant, SaasTenantDto>()
        .MapExtraProperties()
        .Ignore(t => t.EditionName)
        .ForMember(
            t => t.HasDefaultConnectionString,
            opt =>
            {
                opt.MapFrom(t =>
                    t.FindDefaultConnectionString() != null
                );
            }
        );
    
    CreateMap<Edition, EditionDto>()
        .MapExtraProperties()
        .Ignore(x => x.PlanName);
    
    CreateMap<Edition, EditionLookupDto>()
        .MapExtraProperties();
    
  • User Avatar
    0
    Yaduraj created

    Hi @maliming Thanks for your response please can you provide more details:

    1. EditionDto does not contain PlanName
    2. EditionLookupDto - Please specify the package or library to be included. I don't find it anywhere in https://docs.abp.io/api-docs/commercial/3.3/api/Volo.Saas.Host.Dtos.EditionDto.html

    Screen of our code:

    Also, we are you using AutoMaper instead of Volo.Abp.AutoMapper, can I use both? What is the difference between : Volo.Saas.Tenants and Volo.Saas.Host.Dtos and in which version these are being used.

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Also, we are you using AutoMaper instead of Volo.Abp.AutoMapper, can I use both?

    Volo.Abp.AutoMapper will include AutoMaper .

    How about this one? the key is MapExtraProperties.

    CreateMap<Tenant, SaasTenantDto>()
        .MapExtraProperties()
        .Ignore(t => t.EditionName)
        .ForMember(
            t => t.HasDefaultConnectionString,
            opt =>
            {
                opt.MapFrom(t =>
                    t.FindDefaultConnectionString() != null
                );
            }
        );
    

    If not work for you please share the steps to reproduce the problem.

  • User Avatar
    0
    Yaduraj created

    @maliming Thanks for you support. This is was resolved and it was due to data issues and not any technical problem.

Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
Do you need assistance from an ABP expert?
Schedule a Meeting
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v9.2.0-preview. Updated on March 20, 2025, 09:50