Не удается заставить Automapper игнорировать свойство - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть следующие настройки для автомпера:

cfg.CreateMap<NewBuildBlockViewModel, NewBuildBlock>();
cfg.CreateMap<NewBuildBlockAreaViewModel, NewBuildBlockArea>()
                    .ForMember(x => x.CreatedBy, opt => opt.Ignore()).ForMember(x => x.Created, opt => opt.Ignore())
                    .ForMember(x => x.LastModifiedBy, opt => opt.Ignore()).ForMember(x => x.LastModified, opt => opt.Ignore());

Так что для второго сопоставления я хочу игнорировать поля аудита.Классы следующие:

public class NewBuildBlockViewModel
{
    public NewBuildBlockViewModel()
    {
        NewBuildBlockArea = new List<NewBuildBlockAreaViewModel>();
    }

    public int NewBuildBlockId { get; set; }
    public int ContractId { get; set; }
    public IList<NewBuildBlockAreaViewModel> NewBuildBlockArea { get; set; }

}

public class NewBuildBlockAreaViewModel
{
    public int NewBuildBlockAreaId { get; set; }
    public int NewBuildBlockId { get; set; }

    [MaxLength(255)]
    public string Name { get; set; }

    public bool IsPlot { get; set; }
    public bool IsDeletable { get; set; }
}

public class NewBuildBlock : IAuditCreated, IAuditLastModified
{
    [Key] public int NewBuildBlockId { get; set; }

    public int ContractId { get; set; }
    public DateTime Created { get; set; }
    public string CreatedBy { get; set; }
    public DateTime? LastModified { get; set; }
    public string LastModifiedBy { get; set; }
    public List<NewBuildBlockArea> NewBuildBlockArea { get; set; }
}

public class NewBuildBlockArea : IAuditCreated, IAuditLastModified
{
    [Key] public int NewBuildBlockAreaId { get; set; }
    public int NewBuildBlockId { get; set; }

    [MaxLength(255)]
    public string Name { get; set; }

    public bool IsPlot { get; set; }
    public DateTime Created { get; set; }
    public string CreatedBy { get; set; }
    public DateTime? LastModified { get; set; }
    public string LastModifiedBy { get; set; }
    public NewBuildBlock NewBuildBlock { get; set; }

    public override string ToString()
    {
        return Name;
    }
}

Итак, как вы можете видеть, я сопоставляю класс с вложенным списком. Во время сопоставления я бы хотел, чтобы поля аудита игнорировались, но для списков, которые я обнаружил, онивместо этого устанавливаются значения по умолчанию, поэтому в поле «Создано» отображается минимальная дата 01.01.10001, а для значения «CreatedBy» установлено значение «ноль».Что не так с этим кодом?Я использую версию 6.1.1.

var originalNewBuild = this.SirUoW.NewBuildBlock.GetItem(                    
    x => x.BlockUPRN == blockUPRN && x.ContractId == contractId, x => 
    x.NewBuildBlockArea);

var newNewBuild = Mapper.Map(newBuildBlockViewModel, originalNewBuild);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...