У меня есть следующий класс DomainObject:
public class MyDomainObj
{
public CUSTOMER customer {get;set;} // This is database entity
public ORDER order {get;set;}
}
Мой DTO выглядит так:
public class MyDTO
{
public string custId{get;set;}
public strinf orderId{get;set;}
}
Допустим, в таблице CUSTOMER
у меня есть атрибут с именем: customer_id
то же самое для ORDER
таблицы: order_id
Вот моя конфигурация автоматического средства:
m.CreateMap<CUSTOMER, MyDTO>().ForMember(d => d.custId, o => o.MapFrom(s => s.customer_id));
m.CreateMap<ORDER, MyDTO>().ForMember(d => d.orderId, o => o.MapFrom(s => s.order_id));
Я написал метод расширения для картографа, чтобы он работал:
public static class ExtensionAutoMapper
{
public static TDestination Map<TSource, TDestination>(this TDestination destination, TSource source)
{
return Mapper.Map(source, destination);
}
}
Использование:
var response = Mapper.Map<MyDTO>(myDomainObj.customer)
.Map(myDomainObj.order);
Это прекрасно работает.
Вопрос:
- Как изменить конфигурацию отображения вЧтобы отобразить список объектов домена в список dto?
что-то вроде этих строк
var response = Mapper.Map<List<MyDomainObj>, List<MyDTO>>(myDomainObj);
Редактировать: Я хотел бы отобразить поля в базе данныхЕсли объект имеет одно и то же имя, он автоматически переходит в свойства.
Ответ предоставлен @jmoerdyk, решите мою проблему.Однако при таком подходе мне необходимо отобразить все поля объекта базы данных в dto, даже если они имеют одинаковые имена.