Поскольку у меня один DTO, мы используем DTO для GET, PUT и POST http-методов в нашем веб-API.
Для простоты у нас есть ActivityDO:
public ActivityDTO
{
public int Id;
public string Name;
public string CategoryName;
public DateTime DateCreated;
public DateTime DateModified;
}
Сложность заключается в том, что у вас есть только один DTO для обработки нескольких условий, то есть метод post / get / put, отображение выполняется следующим образом:
private MapperConfiguration configuration = new MapperConfiguration(cfg => {
cfg.CreateMap<ActivityDTO, Activity>()
.ForMember(dst => dst.UserId, opt => opt.MapFrom(src => HttpContext.Current.User.Identity.GetUserId()))
.ForMember(dst => dst.CategoryId, opt => opt.MapFrom(src => GetCategoryId(HttpContext.Current.User.Identity.GetUserId(), src.CategoryName)))
.ForMember(dst => dst.DateCreated, opt => opt.MapFrom(src => DateTime.UtcNow))
.ForMember(dst => dst.DateModified, opt => opt.MapFrom(src => DateTime.UtcNow));
});
Я хочу IGNORE отображение DateCreated , если мы сделаем обновление, и мы можем выполнить условие, если id <= 0
, остальное разрешеносопоставление для DateCreated.
Возможно ли это?Скорее бы иметь отдельные DTO между GET / POST (Add) VS PUT (Update)?Есть ли лучшее решение для обработки этой DateCreated VS DateModified вещь?
Я ценю ваши отзывы / комментарии.