diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AsyncCrudAppService.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AsyncCrudAppService.cs index 4cc9f48630..151212925a 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AsyncCrudAppService.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/AsyncCrudAppService.cs @@ -91,7 +91,7 @@ namespace Volo.Abp.Application.Services var entity = MapToEntity(input); - if(entity is IMultiTenant) + if(entity is IMultiTenant && !HasTenantIdProperty(entity)) { TryToSetTenantId(entity); } diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppService.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppService.cs index 744d472de5..2595bc6edd 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppService.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppService.cs @@ -88,7 +88,7 @@ namespace Volo.Abp.Application.Services var entity = MapToEntity(input); - if(entity is IMultiTenant) + if(entity is IMultiTenant && !HasTenantIdProperty(entity)) { TryToSetTenantId(entity); } diff --git a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppServiceBase.cs b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppServiceBase.cs index 0e2efa2dd5..b678362c53 100644 --- a/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppServiceBase.cs +++ b/framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Services/CrudAppServiceBase.cs @@ -154,11 +154,6 @@ namespace Volo.Abp.Application.Services protected virtual void TryToSetTenantId(TEntity entity) { - if (entity is IMultiTenant tenantEntity && tenantEntity.TenantId.HasValue) - { - return; - } - var tenantId = CurrentTenant.Id; if (!tenantId.HasValue) @@ -173,5 +168,10 @@ namespace Volo.Abp.Application.Services propertyInfo.SetValue(entity, tenantId, null); } } + + protected virtual bool HasTenantIdProperty(TEntity entity) + { + return entity.GetType().GetProperty(nameof(IMultiTenant.TenantId)) != null; + } } }