Automapper проекции с Includable IQuerable - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь использовать AutoMapper для проецирования объекта базы данных с включаемыми элементами в другой объект домена

      IQueryable<DBTypeEntity> allItems = _dbContext.DBType.Include(e => e.A)
            .Include(e => e.B)
                .ThenInclude(e => e.C)
            .Include(e => e.D)
                .ThenInclude(ac => ac.E);

И с использованием проекций

              var result = allItems.ProjectTo<DBTypeDomain>(_typeMapper.ConfigurationProvider);

Вот мои отображения:

        CreateMap<DBTypeEntity, DBTypeDomain>()
            .ForMember(e => e.A, opt => opt.Ignore())
            .ForMember(e => e.B, opt => opt.MapFrom(e => e.B))
            .ForMember(e => e.C, opt => opt.MapFrom(e => e.C))
            .ForMember(e => e.E, opt => opt.MapFrom(e => e.E))
            .ForMember(e => e.F, opt => opt.ResolveUsing<FResolver, ICollection<AssociatedFEntity>>(e => e.AssociatedFs))
            .ForMember(e => e.G, opt => opt.MapFrom(e => e.G));

Другие типы являются прямыми свойствами в сопоставлениях свойств, в которых нет ничего особенного. У меня есть все необходимые настройки сопоставления профилей для сопоставителя типов, однако я получаю загадочное исключение (не удается разрешить это в выражении Queryable). Я использую EF Core 2.0 и Automapper 6.2.2

Любая помощь, пожалуйста?

1 Ответ

0 голосов
/ 28 апреля 2018

Мне удалось решить проблему. Включения больше не нужны при использовании проекций (как в Automapper Docs). Пользовательский распознаватель был заменен на оператор выбора из набора, настраиваемый распознаватель запрещал использование проекций в AutoMapper для IQueryable.

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