Нет, вам нужно создать сопоставление для каждого DTO в config.
Допустим, у вас есть Person.cs
, Address.cs
, Car
и пользователя в вашем Entities
public class User
{
public int UserId {get;set;}
public string UserName {get;set;}
public PersonDTO Person {get;set;}
}
public class Person
{
public int PersonID {get;set;}
public string Name {get;set;}
public Address Address {get;set;}
public Car Car {get; set;}
}
Таким образом, вы также PersonDTO
, AddressDTO
и CarDTO
например
public class UserDTO
{
public int UserId {get;set;}
public string UserName {get;set;}
// HERE IF YOU HAVE:
// public PersonDTO MyPerson {get;set;}
// IT WILL NOT MAP
// Property Names should match
public PersonDTO Person {get;set;}
}
public class PersonDTO
{
public int PersonID {get;set;}
public string Name {get;set;}
public AddressDTO Address {get;set;}
public CarDTO Car {get;set;}
}
Ваш класс, в котором указаны все сопоставления.
public class MapperConfig
{
public static void CreateMappings()
{
Mapper.CreateMap<UserDTO, Entities.User>().ReverseMap();
Mapper.CreateMap<PersonDTO, Entities.Person>().ReverseMap();
Mapper.CreateMap<AddressDTO, Entities.Address>().ReverseMap();
Mapper.CreateMap<CarDTO, Entities.Car>().ReverseMap();
}
}
тогда в вас код:
UserDTO user = Mapper.Map<UserDTO>(context.Users.First(s => s.UserId == 1));
Чтобы отобразить список:
List<UserDTO> users = Mapper.Map<IEnumerable<UserDTO>>(context.Users).ToList();
Покуда Название Свойства одинаковы, они должны карта.
Имеет ли обратная маркировка в двух направлениях? – Pascal
Это синтаксис: AutoMapper.Mapper.CreateMap(); http://cpratt.co/using-automapper-creating-mappings/ –
О, я хочу это, но ... обратное сопоставление выполняется с другой стороны, wcf-сервера. Работает ли реверс? : P – Pascal