diff --git a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs index 01e051f019..d231562389 100644 --- a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs +++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions.cs @@ -12,11 +12,52 @@ namespace Volo.Abp.AutoMapper return mappingExpression.ForMember(destinationMember, opts => opts.Ignore()); } - public static IMappingExpression IgnoreCreationTime( + public static IMappingExpression IgnoreHasCreationTimeProperties( this IMappingExpression mappingExpression) where TDestination : IHasCreationTime { return mappingExpression.Ignore(x => x.CreationTime); } + + public static IMappingExpression IgnoreMayHaveCreatorProperties( + this IMappingExpression mappingExpression) + where TDestination : IMayHaveCreator + { + return mappingExpression.Ignore(x => x.CreatorId); + } + + public static IMappingExpression IgnoreCreationAuditedObjectProperties( + this IMappingExpression mappingExpression) + where TDestination : ICreationAuditedObject + { + return mappingExpression + .IgnoreHasCreationTimeProperties() + .IgnoreMayHaveCreatorProperties(); + } + + public static IMappingExpression IgnoreHasModificationTimeProperties( + this IMappingExpression mappingExpression) + where TDestination : IHasModificationTime + { + return mappingExpression.Ignore(x => x.LastModificationTime); + } + + public static IMappingExpression IgnoreModificationAuditedObjectProperties( + this IMappingExpression mappingExpression) + where TDestination : IModificationAuditedObject + { + return mappingExpression + .IgnoreHasModificationTimeProperties() + .Ignore(x => x.LastModifierId); + } + + public static IMappingExpression IgnoreAuditedObjectProperties( + this IMappingExpression mappingExpression) + where TDestination : IAuditedObject + { + return mappingExpression + .IgnoreCreationAuditedObjectProperties() + .IgnoreModificationAuditedObjectProperties(); + } } } diff --git a/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs b/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs index d667b3895d..81c101a5d2 100644 --- a/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs +++ b/framework/test/Volo.Abp.AutoMapper.Tests/Volo/Abp/AutoMapper/AutoMapperExpressionExtensions_Tests.cs @@ -12,7 +12,8 @@ namespace Volo.Abp.AutoMapper public void Should_Ignore_Configured_Property() { var mapper = CreateMapper( - cfg => cfg.CreateMap() + cfg => cfg + .CreateMap() .Ignore(x => x.Value2) .Ignore(x => x.Value3) ); @@ -31,26 +32,33 @@ namespace Volo.Abp.AutoMapper } [Fact] - public void Should_Ignore_CreationTime() + public void Should_Ignore_Audit_Properties() { var mapper = CreateMapper( - cfg => cfg.CreateMap() - .IgnoreCreationTime() + cfg => cfg + .CreateMap() + .IgnoreAuditedObjectProperties() ); - var obj2 = mapper.Map( - new SimpleClassWithCreationTime1 + var obj2 = mapper.Map( + new SimpleClassAudited1 { - CreationTime = DateTime.Now + CreationTime = DateTime.Now, + CreatorId = Guid.NewGuid(), + LastModificationTime = DateTime.Now, + LastModifierId = Guid.NewGuid() } ); obj2.CreationTime.ShouldBe(default); + obj2.CreatorId.ShouldBeNull(); + obj2.LastModificationTime.ShouldBe(default); + obj2.LastModifierId.ShouldBeNull(); } - private static IMapper CreateMapper(Action configurer) + private static IMapper CreateMapper(Action configure) { - var configuration = new MapperConfiguration(configurer); + var configuration = new MapperConfiguration(configure); configuration.AssertConfigurationIsValid(); return configuration.CreateMapper(); } @@ -68,14 +76,20 @@ namespace Volo.Abp.AutoMapper public string Value3 { get; set; } } - public class SimpleClassWithCreationTime1 : IHasCreationTime + public class SimpleClassAudited1 : IAuditedObject { public DateTime CreationTime { get; set; } + public Guid? CreatorId { get; set; } + public DateTime? LastModificationTime { get; set; } + public Guid? LastModifierId { get; set; } } - public class SimpleClassWithCreationTime2 : IHasCreationTime + public class SimpleClassAudited2 : IAuditedObject { public DateTime CreationTime { get; set; } + public Guid? CreatorId { get; set; } + public DateTime? LastModificationTime { get; set; } + public Guid? LastModifierId { get; set; } } } } \ No newline at end of file