Учитывая следующую модель сущности:
public class Location
{
public int Id { get; set; }
public Coordinates Center { get; set; }
}
public class Coordinates
{
public double? Latitude { get; set; }
public double? Longitude { get; set; }
}
... и следующая модель представления:
public class LocationModel
{
public int Id { get; set; }
public double? CenterLatitude { get; set; }
public double? CenterLongitude { get; set; }
}
Свойства LocationModel названы таким образом, что сопоставление сущности с моделью не требует пользовательского преобразователя.
Однако при сопоставлении модели с сущностью требуется следующий настраиваемый преобразователь:
CreateMap<LocationModel, Location>()
.ForMember(target => target.Center, opt => opt
.ResolveUsing(source => new Coordinates
{
Latitude = source.CenterLatitude,
Longitude = source.CenterLongitude
}))
Почему это? Есть ли более простой способ заставить AutoMapper создать новый объект значения Coordinates на основе соглашений об именах в модели представления?
Обновить
Чтобы ответить на первый комментарий, нет ничего особенного в сопоставлении объекта с моделью представления:
CreateMap<Location, LocationModel>();