Учитывая следующую модель сущности:
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>();