196 votes

Comment spécifier une règle de mapping lorsque les noms des propriétés diffèrent

Je suis un débutant dans le framework Automapper. J'ai une classe de domaine et une classe DTO comme suit :

public class Employee
{
   public long Id {get;set;}
   public string Name {get;set;}
   public string Phone {get;set;}
   public string Fax {get;set;}
   public DateTime DateOfBirth {get;set;}
}

public class EmployeeDto
{
   public long Id {get;set;}
   public string FullName {get;set;}
   public DateTime DateOfBirth {get;set;}
}

Note : Le nom de la propriété "Name" de la classe Employee n'est pas le même que celui de la propriété "FullName" de la classe EmployeeDto.

Et voici le code pour mapper l'objet Employee en EmployeeDto :

Mapper.CreateMap(); // ligne de code (***)
EmployeeDto dto = Mapper.Map(employee); 

Ma question est : Si je veux mapper Employee (classe source) en EmployeeDto (classe de destination), comment puis-je spécifier la règle de mapping ? En d'autres termes, que devrais-je faire de plus avec la ligne de code (***) ci-dessus ?

2voto

quasar Points 324

Les réponses ci-dessus sont excellentes et j'espère que l'OP a obtenu sa réponse. Je voudrais simplement ajouter comment nous pouvons mapper des valeurs fixes au lieu de champs en utilisant la méthode UseValue() de l'interface IMemberConfigurationExpression.

Mapper.CreateMap()
    .ForMember(dest => dest.Department, opt => opt.UseValue("Development"));

Cela va mapper "Development" comme valeur de propriété du département pour les données de destination.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X