0% au considerat acest document util (0 voturi)
8 vizualizări4 pagini

Auto Mapper

AutoMapper este un instrument pentru maparea obiectelor, facilitând transformarea unui obiect de intrare într-un obiect de ieșire de alt tip, reducând codul repetitiv și erorile. Configurarea se face prin crearea unei instanțe a clasei MapperConfiguration și utilizarea profilurilor pentru a organiza mapările. AutoMapper poate gestiona diferențele de nume ale proprietăților între sursă și destinație prin opțiunea ForMember.

Încărcat de

cosminadumitrita
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
8 vizualizări4 pagini

Auto Mapper

AutoMapper este un instrument pentru maparea obiectelor, facilitând transformarea unui obiect de intrare într-un obiect de ieșire de alt tip, reducând codul repetitiv și erorile. Configurarea se face prin crearea unei instanțe a clasei MapperConfiguration și utilizarea profilurilor pentru a organiza mapările. AutoMapper poate gestiona diferențele de nume ale proprietăților între sursă și destinație prin opțiunea ForMember.

Încărcat de

cosminadumitrita
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

AutoMapper

Este un mapper obiect-obiect. Maparea obiect-obiect functioneaza prin transformarea unui obiect de
intrare de un tip intr-un obiect de iesire de alt tip.

Pentru a utliza AutoMapper, mai intai este nevoie de o sursa si o destinatie.

Ajută la eliminarea codului repetitiv și predispus la erori atunci când se copiaza date de la un obiect la
altul. AutoMapper este util în special în scenarii precum maparea entităților bazei de date cu DTO
(Obiecte de transfer de date) sau obiecte ViewModel.

AutoMapper va ignora excepțiile de referință nulă atunci când se mapeaza sursa la destinatie.

var config = new MapperConfiguration(cfg => [Link]<Order, OrderDto>());

The type on the left is the source type, and the type on the right is the destination type.

Majoritatea aplicatiilor folosesc DI pt a injecta instanta Imapper creata.

Configurarea cea mai buna este in Application startup ([Link] file pt [Link])

1.) Se creeaza o instanta a clasei MapperConfiguration si se initializeaza.

var config = new MapperConfiguration(cfg => {


[Link]<Employee, EmployeeDTO>();
[Link]<EmployeeProfile>();
});
The MapperConfiguration instance can be stored statically, in a static field or in a dependency
injection container. Once created it cannot be changed/modified.

2.) Profile Instances

O modalitate bună de a organiza configurațiile de mapare este cu profiluri. Se creeaza clase care
moștenesc din Profil și se pune configurația în constructor:

// This is the approach starting with version 5


public class EmployeeProfile : Profile
{
public EmployeeProfile()
{
CreateMap<Employee, EmployeeDto>();
// Use CreateMap... Etc.. here (Profile methods are the same as
configuration methods)
}
}

3.) Assembly Scanning for auto configuration

Profilurile pot fi adăugate la configurația principală a mapperului în mai multe moduri, fie direct:

[Link]<EmployeeProfile>();
[Link](new EmployeeProfile());
sau prin scanarea automată a profilurilor:
// Scan for all profiles in an assembly
// ... using instance approach:
var config = new MapperConfiguration(cfg => {
[Link](myAssembly);
});
var configuration = new MapperConfiguration(cfg => [Link](myAssembly));

// Can also use assembly names:


var configuration = new MapperConfiguration(cfg =>
[Link](new [] {
"[Link]",
"[Link]"
});
);

// Or marker types for assemblies:


var configuration = new MapperConfiguration(cfg =>
[Link](new [] {
typeof(HomeController),
typeof(Entity)
});
);
AutoMapper va scana ansamblurile desemnate pentru clasele moștenite de la Profil și le va adăuga la
configurație.
What will happen if the Source and Destination Property Names are
Different?

If the Property names differ in Source and Destination types, then you can map such properties in
AutoMapper using the ForMember option.

AutoMapper with Autofac


namespace [Link]
{
public class AutomapperDependencyModule : Module
{
protected override void Load(ContainerBuilder builder)
{
[Link](builder);

//Configure auto mapper


var mapper = [Link]();
//Register mapper as IMapper with Dependency Injection container
[Link](mapper).As<IMapper>();
}
}
}

public static class MapperFactory


{
public static IMapper Mapper()
{
var profileTypes = [Link](typeof (MapperFactory))
.GetTypes()
.Where(t => [Link]().IsSubclassOf(typeof (Profile)));

var config = new MapperConfiguration(cfg =>


{
foreach (var profileType in profileTypes)
{
[Link](profileType);
}
});

var mapper = [Link]();

return mapper;
}
}

- CreateMap<PatientDTO, RegistrationDTO>()
.ForMember(dest => [Link], m => [Link]());

- .ForMember(dest => [Link], m => [Link](src =>


[Link] == "Y"));
- .ForMember(dest => [Link], m => [Link](src =>
[Link](x=> new UmaAddressDTO
{
Active = [Link],

Id = [Link],
CityID = [Link],
City = [Link] != null ?
[Link] : [Link],
CountryID = [Link]
})))

- .ForMember(dest => [Link],


m => [Link](src => [Link] !=
null ? [Link] : [Link]))

S-ar putea să vă placă și