Використання AutoMapper в проєктах .NET

pic

AutoMapper — це бібліотека для .NET, яка спрощує передачу даних між об'єктами (mapping). Зокрема, коли потрібно перетворити дані з одного об'єкта в інший, AutoMapper автоматизує цей процес, що робить ваш код більш чистим і легким у супроводі.

Кроки використання AutoMapper:

1- Додавання AutoMapper до проєкту: Першим кроком є додавання AutoMapper через NuGet. Можна використовувати наступну команду.

Install-Package AutoMapper

2- Налаштування маппінгу між об'єктами (Mapping): AutoMapper дозволяє визначити відносини між джерелом і цільовим об'єктом. Це налаштування можна зробити в класі Profile.

Наприклад, якщо ми хочемо перетворити об'єкт Product в об'єкт ProductDTO:

public class Product  
{  
 public int Id { get; set; }  
 public string Name { get; set; }  
 public decimal Price { get; set; }  
}  

public class ProductDTO  
{  
 public int Id { get; set; }  
 public string Name { get; set; }  
}  

public class MappingProfile : Profile  
{  
 public MappingProfile()  
 {  
 CreateMap<Product, ProductDTO>();  
 }  
}

3- Ініціалізація AutoMapper: Для запуску AutoMapper використовується MapperConfiguration. Це можна додати в файл Startup.cs або Program.cs:

var configuration = new MapperConfiguration(cfg => {  
 cfg.AddProfile<MappingProfile>();  
});  

IMapper mapper = configuration.CreateMapper();

4- Процес маппінгу: Для перетворення об'єктів можна використовувати інтерфейс IMapper.

var product = new Product { Id = 1, Name = "Product1", Price = 100.0M };  
var productDTO = mapper.Map<ProductDTO>(product);

Кращі практики використання:

  1. Здійснюйте перетворення тільки за потребою: Хоча AutoMapper є потужним інструментом, не рекомендується виконувати маппінг для кожного об'єкта без потреби.
  2. Використання Profile: Створення окремого класу Profile для кожного типу перетворення допомагає зробити код більш структурованим та модульним. Особливо для великих проєктів корисно використовувати різні Profile для різних шарів (API, Service, DataAccess).
  3. Умовне маппінг (Conditional Mapping): AutoMapper також підтримує умовне маппінг.
  4. Flattening (Сплощення):
public class Order  
{  
 public int OrderId { get; set; }  
 public Customer Customer { get; set; }  
}  

public class Customer  
{  
 public string Name { get; set; }  
 public string Email { get; set; }  
}  

public class OrderDTO  
{  
 public int OrderId { get; set; }  
 public string CustomerName { get; set; }  
 public string CustomerEmail { get; set; }  
}  

CreateMap<Order, OrderDTO>()  
 .ForMember(dest => dest.CustomerName, opt => opt.MapFrom(src => src.Customer.Name))  
 .ForMember(dest => dest.CustomerEmail, opt => opt.MapFrom(src => src.Customer.Email));
  1. Моніторинг продуктивності маппінгу: При роботі з великими наборами даних перетворення AutoMapper можуть створювати проблеми з продуктивністю. Для оптимізації процесів маппінгу слід застосовувати різні стратегії.

Перекладено з: .NET Projelerinde AutoMapper Kullanımı

Leave a Reply

Your email address will not be published. Required fields are marked *