Обновление сложных объектов в базе данных с помощью AutoMapper - как игнорировать вложенные объекты для одной временной карты? - PullRequest
0 голосов
/ 30 мая 2018

Позвольте мне объяснить немного.Вот мои уроки:

// ClassOne
int ID
string Name
ClassTwo ClassTwoExample

// ClassTwo
int ID
string Name
ClassThree ClassThreeExample
ClassFour ClassFourExample

// ClassThree
int ID
string Name

// ClassFour
int ID
string Name

Таким образом, вы получите общее представление об этом.ClassOne является моим основным / родительским классом и содержит ClassTwo.ClassTwo содержит массу информации и ссылок на еще больше классов.ClassThree и ClassFour являются просто ссылочными классами , которые мне не нужно изменять.

Моя цель - обновить свойства в ClassOne иосновные свойства в ClassTwo ( игнорируя ClassThree и ClassFour).Тем не менее, когда я иду на обновление с использованием AutoMapper (_mapper.Map(..,..)), он также пытается отобразить ClassThree и ClassFour, которые в итоге становятся нулевыми, и база данных пытается сохранить их.

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

// Mapping snippet
function (ClassOne model) {
    var oldClassOne = _repos.GetClassOne(model.ID);
    _mapper.Map(model, oldClassOne)
    await _repos.SaveAllAsync();
}

Есть ли где-нибудь в этом фрагменте кода, где я могу сказать AutoMapper игнорировать определенные свойства и просто специально отображать то, что я хочу? *

1 Ответ

0 голосов
/ 30 мая 2018

Инициализируйте ваш Mapper, как это

public class AutoMapperConfig
{
    public static void RegisterMappings()
    {
        Mapper.Initialize(m =>
        {
            m.CreateMap<ClassOne, ClassOne>().ForMember(d => d.ClassTwoExample.ClassThreeExample, s => s.Ignore())
                                             .ForMember(d => d.ClassTwoExample.ClassFourExample, s => s.Ignore());
        });
    }

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