Мы используем AutoMapper (9.0.0) in. net core для отображения значений между источником и местом назначения. До времени это работает нормально. Тем не менее, нам нужно сохранить некоторые значения в пункте назначения такими, какие они есть после отображения.
Мы пытались использовать UseDestinationValue()
и Ignore()
методы для члена, но это не сохраняет существующие значения. Ниже приведен код для того же.
RequestModel
public class RequestModel
{
public int Id { get; set; }
public int SubmittedById { get; set; }
public string Description { get; set; }
public string Location { get; set; }
}
RequestDto
public class RequestDto
{
public int Id { get; set; }
public int SubmittedById { get; set; }
public string Description { get; set; }
public string Location { get; set; }
public string SubmittedByName { get; set; }
}
Мы принимаем Dto в API в качестве параметра запроса API
[HttpPost]
public IActionResult Save([FromBody] RequestDto requestDto)
{
// Some logic to save records
}
Итак, перед сохранением записей мы сопоставляем RequestDto с RequestModel и передаем эту модель на уровень DAL для сохранения таких записей
var requestModel = MapperManager.Mapper.Map<RequestDto, RequestModel>(RequestDto);
И вызова на уровне данных
var requestModel = DAL.Save(RequestModel)
Итак, после получения обновленной модели запроса мы снова сопоставляем ее с requestDto, в этом случае мы теряем значение для свойства SubmittedByName.
return MapperManager.Mapper.Map<RequestModel, RequestDto>(requestModel);
Класс сопоставления
public class RequestProfile: Profile
{
public RequestProfile()
{
CreateMap<RequestModel, RequestDto>()
CreateMap<RequestDto, RequestModel>()
}
}
This Столбец SubmittedByName отсутствует в таблице запросов, но мы хотим использовать его значение после сохранения записей.
Итак, как мы можем сохранить значение назначения после сопоставления.
Любая помощь по этому вопросу ценится!