Automapper v8 не игнорирует навигационные свойства класса EF (Entity Framework)

#asp.net-core #entity-framework-6 #automapper

#asp.net-core #entity-framework-6 #automapper

Вопрос:

Ниже приведен код для профиля Automapper:

 public class MyMappingProfile: Profile
{
    public MyMappingProfile()
    {
        Mapper.Initialize(cfg => {
            cfg.CreateMap<MyModelClass, MyEntityClass>()
                .ForMember(dest => dest.NavigationProp1, opt => opt.Ignore())
                .ForMember(dest => dest.NavigationProp2, opt => opt.Ignore());
        });
    }
}
  

Ниже приведен код для создания нового объекта entity (К вашему сведению, я использую этот код в проекте .NET Core, поэтому _mapper является :

 var newEntity = _mapper.Map<MyModelClass, MyEntityClass>(model);
  

Но приведенная выше строка кода выдает приведенную ниже ошибку:

Были обнаружены несопоставленные элементы. Просмотрите типы и элементы ниже. Добавьте пользовательское выражение сопоставления, игнорируйте, добавьте пользовательский преобразователь или измените тип источника / назначения

Если нет подходящего конструктора, добавьте ctor без аргументов, добавьте необязательные аргументы или сопоставьте все параметры конструктора

AutoMapper создал эту карту типов для вас, но ваши типы не могут быть сопоставлены с использованием текущей конфигурации. MyModelClass -> MyEntityClass (список членов назначения) MyModelClass -> MyEntityClass (список членов назначения)

Не отображенные свойства:

NavigationProp1

NavigationProp2

Есть идеи, почему Automapper все еще жалуется на не отображенные элементы, даже после того, как они игнорируются?

Спасибо.

Комментарии:

1. Каково определение для MyModelClass и MyEntityClass ? Поделитесь с нами соответствующим кодом, мини-демонстрация была бы полезной.

2. Вы неправильно его настраиваете. Смотрите документы .

3. @Lucian Bargaoanu, не могли бы вы, пожалуйста, указать, что именно я делаю неправильно в конфигурации? Я прошел по предоставленной вами ссылке, но не смог разобраться в неправильной конфигурации. Спасибо.

4. Начните с нуля с простого теста, как в документах. Заставьте это работать. И тогда вы увидите разницу.

5. Из-за нехватки времени я не могу тратить на это много времени. Итак, я добавил оба отсутствующих свойства назначения в исходный код, и на данный момент это решило проблему. Спасибо всем за их предложения.

Ответ №1:

Я, наконец, решил проблему, изменив класс профиля сопоставления, как показано ниже:

 public class MyMappingProfile: Profile
{
    public MyMappingProfile()
    {
        CreateMap<MyModelClass, MyEntityClass>()
            .ForMember(dest => dest.NavigationProp1, opt => opt.Ignore())
            .ForMember(dest => dest.NavigationProp2, opt => opt.Ignore());
    }
}
  

Приветствия.