Обновлять только сопоставленные поля или игнорировать несопоставленные поля - Automapper? - PullRequest
0 голосов
/ 29 сентября 2019

Я очень новичок в Automapper и сталкиваюсь с трудностями при обновлении сопоставленных полей.Я должен согласиться, что в Интернете есть миллионы ответов на этот вопрос, но проблема в моем сценарии ничем не помогает.

Проблема: я пытаюсь обновить только сопоставленные поля.Но когда я это делаю, мои полные свойства назначения обновляются.

Например,

Мой объект назначения (таблица БД) содержит 5 свойств и все5 свойств принимает ноль.Но у меня есть только 3 свойства в моем источнике (файл модели).Я сопоставляю все три исходных поля с полями назначения, но у меня нет сопоставления для оставшихся двух свойств назначения.Вы бы правильно догадались, да, когда я обновляю это, два несопоставленных поля также обновляются до нуля (значение по умолчанию - DB).Но это не должно иметь место, скорее оно должно иметь существующие значения.

Пожалуйста, смотрите мой код ниже,

Ссылки: Версия Automapper: v6.2.2 и RuntimeВерсия: v4.0.3

Repository.cs,

var objectToUpdate = Mapper.Map<TDomain>(entity); //TDestination Map<TDestination>(object source);
DatabaseContext.Entry(objectToUpdate).State = EntityState.Modified;

InvoiceLineMapping.cs

public static void Map(IProfileExpression profile)
    {                     
                profile.CreateMap<Registration, PT_Registration>()
                .ForMember(d => d.Name_VC, map => map.MapFrom(s => s.Name))
                .ForMember(d => d.UserName_VC, map => map.MapFrom(s => s.Username))
                .ForMember(d => d.Mobile_VC, map => map.MapFrom(s => s.Mobile));
     }

Примечание. Как я уже говорил, у меня есть два не отображенныхполя находятся в месте назначения, они EMail_VC и Comments_VC, а их значения - sample@test.com и testComments соответственно.Когда происходит обновление, эти два поля становятся пустыми (значение по умолчанию)

Я пытался,

  • .ForAllOtherMembers (opt => opt.Ignore ());// после последнего сопоставления, т.е. Mobile
  • profile.CreateMap (MemberList.Source) // Я также пробовал MemberList.Destination
  • Я также пробовал, AutoMapper: «Игнорировать остальные» метод расширения,
  • В конце я попробовал puttin ReverseMap ().// после последнего сопоставления, т. е. Mobile
  • Я даже пытался найти нулевое значение и удалить его из целевого объекта (objectToUpdate - вы можете видеть выше), но ничего не помогает.

Так может кто-нибудь, пожалуйста, посмотрите на это и предоставьте мне лучшее решение.Я знал, что решение будет проще, но поскольку я не знаю об этом, оно занимает все больше и больше времени.

Я ценю ваше время.Любая помощь будет очень полезна.

...