Целью здесь является игнорировать значения нулевого источника, не требуя, чтобы исходный объект имел все поля, которые имеет объект назначения. Предотвращение нулевой видимости работает только в том случае, если все поля соответствуют объектам.AutoMapper не может предотвратить значения нулевого источника, если не все свойства источника соответствуют
public class ApiStudent {
public long Id { get; set; }
public string Name { get; set; }
}
public class DomainStudent {
public long Id { get; set; }
public string Name { get; set; }
public long SchoolId { get; set; }
}
Когда я запускаю следующее отображение:
Mapper.CreateMap<ApiStudent, DomainStudent>()
.ForAllMembers(opt => opt.Condition(src => !src.IsSourceValueNull));
var api = new ApiStudent();
api.Id = 123;
api.Name = null;
var domain = new DomainStudent();
domain.Id = 123;
domain.Name = "Homer Simpson"; // goal is to prevent this from being written to null
domain = Mapper.Map(api, domain);
// I get an error here saying the SchoolId mapping is missing from ApiStudent
Если я удалить ".ForAllMembers (! Неавтоматического => opt.Condition (SRC => src.IsSourceValueNull));" из определения Mapping, я не получаю ошибку, но тогда свойство .Name будет перезаписано до нуля. Что мне здесь не хватает, чтобы заставить AutoMapper пропускать свойства, существующие на целевом объекте, но не исходный объект?
Благодаря мате - только то, что я искал. – Brendan