Это мой код:
public class PostDto : BaseDto<PostDto, Post>
{
[JsonIgnore]
public override int Id { get; set; }
[Required]
[StringLength(200)]
public string Title { get; set; }
[Required]
[DataType(DataType.Html)]
public string Text { get; set; }
[Required]
[StringLength(500)]
[DataType(DataType.Text)]
public string ShortDescription { get; set; }
[Required]
public int TimeToRead { get; set; }
[Required]
[DataType(DataType.ImageUrl)]
public string Image { get; set; }
[Required]
public int CategoryId { get; set; }
[JsonIgnore]
public DateTimeOffset Time { get; set; }
[JsonIgnore]
public int UserId { get; set; }
public override void CustomMappings(IMappingExpression<Post, PostDto> mappingExpression)
{
mappingExpression.ForMember(
dest => dest.Time,
config => config.MapFrom(src => DateTimeOffset.Now));
mappingExpression.ReverseMap().ForMember(
dest => dest.Time,
config => config.MapFrom(src => DateTimeOffset.Now));
mappingExpression
.ForMember(d => d.Time, opt => opt.MapFrom(src => DateTimeOffset.Now))
.ReverseMap()
.ForMember(d => d.Time, opt => opt.MapFrom(src => DateTimeOffset.Now))
.ForPath(s => s.Time, opt => opt.MapFrom(src => DateTimeOffset.Now));
}
}
И я получаю dto от контроллера и сопоставляю его с сущностью. Я хочу добавить время при отображении автоматически, но это не сработает.
Если я сопоставлю сущность (post) с dto (postDto), например, чтобы преобразовать дату в строку, это будет работать, но наоборот, это не будет работать
my Controller:
public override Task<ApiResult<PostSelectDto>> Create(PostDto dto, CancellationToken cancellationToken)
Код для преобразования dto в сущность (после того, как время карты в [model] равно нулю или значение по умолчанию datetimeoffset)
var model = dto.ToEntity(Mapper);
Метод ToEntity:
public TEntity ToEntity(IMapper mapper)
{
return mapper.Map<TEntity>(CastToDerivedClass(mapper, this));
}