Automapper - условное отображение для расширений IQueryable и в памяти - PullRequest
0 голосов
/ 18 октября 2018

У меня есть классы от EntityA до DtoA и 2 использования автомата в моем проекте .NET.

Первый:

var result1 = dbContext
    .Set<EntityA>()
    .Where(...)
    .ProjectTo<DtoA>(new { param1 = true } )
    .ToList();

А второй:

var aList = dbContext
    .Set<EntityA>()
    .Where(...)
    .ToList();

var result = Mapper
    .Map<DtoA[]>(aList, options => options.Items["param1"] = true);

Я хочу, чтобы в обоих случаях работало многоразовое отображение.Это отображение должно быть условным для некоторых полей на основе значения param1.Как реализовать это в одном CreateMap <,> (). ForMember () API?

1 Ответ

0 голосов
/ 18 октября 2018

Я не совсем понял, какую логику вы хотите, но вы могли бы поместить любую логику в метод, подобный этому:

 c.CreateMap<A, B>()
    .ForMember(dest => dest.Items, opt => opt.ResolveUsing(src =>
    {
       if (src.Items["param1"] == true)
       {
           // Do whatever
       }

       return /*do whatever else*/;
    }));

Это то, что вы хотите, или я неправильно понял вопрос?

Редактировать: Я попробую еще раз:

var result1 = dbContext
    .Set<EntityA>()
    .Where(...)
    .Select(c => mapper.Map<A>(c))
    .ToList();

Однако все еще не совсем понимаю, чего вы хотите.Можете ли вы привести пример с данными, например, какой набор должен быть преобразован в какой?

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