Как сглаживать дочерний объект, используемый повторно в C # с Automapper - PullRequest
0 голосов
/ 14 января 2019

Использование следующих объектов

public class User
{
    public Guid Id { get; set; }
    public string Username { get; set; }
}

public class GeneralEntity
{
    public Guid Id { get; set; }

    public User CreatedByUser { get; set; }

    public User DeletedByUser { get; set; }
}

Как мне добавить это в GeneralEntityDto ниже?

public class GeneralEntityDto
{
    public Guid Id { get; set; }

    public string CreatedByUsername { get; set; }

    public string DeletedByUsername { get; set; }
}

Я попытался настроить сопоставления, как показано ниже, но это не удается из-за жалобы о том, что «CreatedByUsername» и «DeletedByUsername» не сопоставлены.

protected void Configure()
{
    CreateMap<GeneralEntity, GeneralEntityDto>()
        .ForMember(dest => dest.CreatedByUsername, 
            opt => opt.MapFrom(src => src.CreatedByUser.Username))
        .ForMember(dest => dest.DeletedByUsername, opt => 
            opt.MapFrom(src => src.DeletedByUser.Username));
}

1 Ответ

0 голосов
/ 14 января 2019

Вы можете использовать соглашение об именах, которое предоставляет autopper. В основном, если вы включите точную строку имени свойства исходного объекта, вам не нужно добавлять ForMember() automapper достаточно умен, чтобы сделать это автоматически.

Это означает, например:

public class GeneralEntity
{
  public Guid Id { get; set; }

  public User CreatedBy { get; set; } // renaming just for simplicity

  public User DeletedBy { get; set; } // renaming just for simplicity
}



public class GeneralEntityDto
{
  public Guid Id { get; set; }

  public string CreatedByUsername { get; set; }

  public string DeletedByUsername { get; set; }
}

Ссылка также на эти:

http://docs.automapper.org/en/stable/Flattening.html

Двухстороннее сопоставление AutoMapper с тем же именем свойства

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...