Стратегия сопоставления строк как дат с датой и временем с использованием Mapster, когда строки могут быть пустыми? - PullRequest
0 голосов
/ 07 мая 2020

Я использую Mapster для отображения значений из dto на основе объекта json в таблицу данных Entity Framework. У целевого класса есть поле [Column(TypeName = "datetime2(3)")] public DateTime? CorrectBy { get; set; }, которое заполняется из строки, представляющей дату. Строка может быть пустой или "".

Есть ли хорошая картографическая стратегия для решения этой проблемы с помощью Mapster? В настоящее время мое отображение выглядит следующим образом:

TypeAdapterConfig<InModels.Violation, InspectionViolation>.NewConfig()
            .Map(d=>d.CorrectBy,s=>DateTime.Now,srcCond=>srcCond.CorrectBy=="")
            .Map(d => d.CorrectBy, s =>DateTime.Parse(s.CorrectBy))                
            .IgnoreNullValues(true);

, но по-прежнему выдает ошибку о том, что оно не может преобразовать "" в datetime.

1 Ответ

0 голосов
/ 08 мая 2020

Пустая строка не поддерживается преобразованием в DateTime. Вам необходимо определить настраиваемую строку для сопоставления даты и времени.

TypeAdapterConfig<string, DateTime?>.NewConfig()
    .MapWith(src => string.IsNullOrEmpty(src) ? null : (DateTime?)DateTime.Parse(src));
...