Показать список <Class>в список <Class>с автоматом для .net core - PullRequest
0 голосов
/ 28 октября 2019

У меня две модели. Первый:

public class Push
{
    public int PushId { get; set; }
    public Customer Customer { get; set; }
    public int CustomerId { get; set; }
    public string PackageId { get; set; }
    public string Category { get; set; }
    public string Advertiser { get; set; }
    public PushTemplate PushTemplate { get; set; }
    public string TemplateType { get; set; }
    public string IntervalType { get; set; }
    public int TopDateTimeBorder{ get; set; }
    public int  BottomDateTimeBorder { get; set; }
    public DateTime ClientStartDateTime { get; set; }
    public string LangCode { get; set; }
    public string PushTitle { get; set; }
    public string PushBody { get; set; }
    public string FCMResponse { get; set; }
    public bool Sent { get; set; }
    public DateTime CreatedAt { get; set; }
    public Distribution Distribution { get; set; }
    public Push()
    {
        CreatedAt = DateTime.UtcNow;
    }
}

, а второй:

public class FailedPush
{
    public int FailedPushId { get; set; }

    public Customer Customer { get; set; }
    public int CustomerId { get; set; }
    public string PackageId { get; set; }
    public string Category { get; set; }
    public string Advertiser { get; set; }
    public PushTemplate PushTemplate { get; set; }
    public string TemplateType { get; set; }
    public string IntervalType { get; set; }
    public int TopDateTimeBorder{ get; set; }
    public int  BottomDateTimeBorder { get; set; }
    public DateTime ClientStartDateTime { get; set; }
    public string LangCode { get; set; }
    public string PushTitle { get; set; }
    public string PushBody { get; set; }
    public string FCMResponse { get; set; }
    public DateTime CreatedAt { get; set; }
    public Distribution Distribution { get; set; }
    public FailedPush()
    {
        CreatedAt = DateTime.UtcNow;
    }
}

Я хотел бы получить список FailedPush моделей из списка Push моделей, если свойствоSent ложно.

Итак, для этого у меня есть следующий код:

 var failedPushes = _mapper.Map<List<Push>, List<FailedPush>>(await pushes.Where(x => !x.Sent).ToListAsync()); 

Но failedPushes пусто. Для внедрения маппера I пользовательский интерфейс IMapper:

// class prop 
private readonly IMapper _mapper;

... 

// constructor 

public ScopedProcessingService(IMapper mapper) 
{ 
...
_mapper = mapper;
...
}

А в классе Startup.cs у меня есть следующее:

services.AddAutoMapper(typeof(Startup));

Так что же не так?

1 Ответ

1 голос
/ 28 октября 2019

Вам необходимо создать конфигурацию ваших классов сопоставления.

Automapper будет автоматически искать классы, которые наследуют Profile, для создания конфигурации.

Создайте папку Profile и поместите туда свои конфигурации.

public class PushProfile : Profile
{
    public PushProfile()
    {
        CreateMap<Push, FailedPush>();
    }
}
...