Я очень новичок в 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 - вы можете видеть выше), но ничего не помогает.
Так может кто-нибудь, пожалуйста, посмотрите на это и предоставьте мне лучшее решение.Я знал, что решение будет проще, но поскольку я не знаю об этом, оно занимает все больше и больше времени.
Я ценю ваше время.Любая помощь будет очень полезна.