Как использовать Automapper в .Net Core, как я могу отобразить вложенное отношение внешнего ключа? - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь отобразить отношение FK в моем классе DTO.Тем не менее, я всегда получаю «нулевые» значения в качестве ответа в «Почтальоне».

Поскольку проект включает в себя компании, которые могут быть либо клиентами / партнерами и т. Д. Я создал базовую таблицу компании и создал клиентов с отношениями FK к компании..

Класс компании

public class Company
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [MaxLength(50)]
    public string Name { get; set; }

    [MaxLength(50)]
    public string Street { get; set; }

    public int Zip { get; set; }

    [MaxLength(50)]
    public string City { get; set; }

Класс клиента

public class Client
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [ForeignKey("CompanyId")]
    public Company Company { get; set; }
    public int CompanyId { get; set; }

    public ICollection<User> Users { get; set; }
        = new List<User>();

    public ICollection<Department> Departments { get; set; }
        = new List<Department>();

ClientDTO

public class ClientDto
{
    public int Id { get; set; }
    public string CompanyName { get; set; }
    public string CompanyStreet { get; set; }

    public ICollection<UserDto> Users { get; set; }
        = new List<UserDto>();
}

AutoMapper в классе запуска

Mapper.Initialize(cfg =>
        {
            cfg.CreateMap<Client, ClientDto>();
            cfg.CreateMap<Client, ClientWithoutUsersDto>();
            cfg.CreateMap<Company, CompanyDto>();
            cfg.CreateMap<User, UserDto>();
        });

При любом отображении я получаю один и тот же Json Response в Postmane :

"id": 1,
"companyName": null,
"streetName": null

Я не уверен, поддерживает ли Automapper вложенное отображение FK.Я знаю, что коллекция пользователей работает хорошо.

1 Ответ

0 голосов
/ 05 марта 2019

Проверьте вашу команду запроса, возвращает ли она ожидаемый объект Company.

Вот мини-рабочая демонстрация для запроса.

var client = _context.Client.Include(c => c.Company).FirstOrDefault(c => c.Id == 1);
Mapper.Initialize(cfg => cfg.CreateMap<Client, ClientDto>());
var result = Mapper.Map<ClientDto>(client);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...