Как сопоставить 3 объекта с моделью представления с AutoMapper - PullRequest
1 голос
/ 04 июня 2019

Я использую Asp.NET Core 2.2. У меня есть две доменные модели с именами Product и ProductType

Это Продукт модель домена

public class Product
{
    public int ProductID { get; set; }
    public int ProductName { get; set; }
    public string ProductImage { get; set; }
    public int ProductTypeID { get; set; }

    [ForeignKey("ProductTypeID")]
    public virtual ProductType ProductType{ get; set; }
}

А это ProductType модель домена

public class ProductType
{
    public int ProductTypeID { get; set; }
    public int ProductTypeName { get; set; }
    public string ProductTypeImage { get; set; }
    public string ProductTypeDescription { get; set; 
}

Я хочу отобразить их DTO с помощью Automapper. Это ProductTypeDTO

public class ProductTypeDTO
{
    public int ProductTypeName { get; set; }
    public string ProductTypeImage { get; set; }
}

И те же свойства для модели Product Domain и ProductDTO. Затем у меня есть модель View, в которой я держу Enumrable из этих DTO, поэтому

это CarViewModel

public class CarViewModel
{
    public IEnumerable<ProductTypeDTO> ProductTypeDTO { get; set; }
    public IEnumerable<ProductDTO> ProductDTO { get; set; }
}

Основная проблема в том, что я не знаю, как создать карту между моделями доменов и DTO, а затем объединить DTO в CarViewModel. Это представление о том, что я хочу сделать enter image description here

1 Ответ

1 голос
/ 04 июня 2019

Я должен написать код. это тебе поможет,

Шаг 1: создать профиль автоматического обработчика

public  class AutoMapperConfig : Profile
 {
  public   AutoMapperConfig()
    {
    AutoMapper.Mapper.Initialize(cfg => {
       cfg.CreateMap<Product, ProductDTO>();
       cfg.CreateMap<ProductType, ProductTypeDTO>();
        /* etc */
     });
     }
   }

Шаг 2: настройка при запуске

 public class Startup
{
public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}

public IConfiguration Configuration { get; }


public void ConfigureServices(IServiceCollection services)
{


    // Start Registering and Initializing AutoMapper

    Mapper.Initialize(cfg => cfg.AddProfile<AutoMapperConfig>());
    services.AddAutoMapper();


}
 }

Шаг 3. Получите вывод.

     var carViewModel=new CarViewModel{
             ProductDTO = ProductQuery.ToList().Select(x=>    AutoMapper.Mapper.Map<ProductDTO>(Product)).ToList(),
        ProductTypeDTO = ProductTypeQuery.ToList().Select(x=>   AutoMapper.Mapper.Map<ProductTypeDTO>(Product)).ToList(),
       };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...