0

我是 AutoMapper 的一个小新手,我在 Stackoverflow 和 Github 上几乎找不到关于 v6.0 的信息。我需要这个问题的帮助

我有这两个实体:

public class DocFinanceiro
{
    public int AutoId { get; set; }  

    public virtual ICollection<QuitacaoDocFinan> QuitacoesDocFinan { get; set; } 
}

public class QuitacaoDocFinan
{
        public int AutoId { get; set; }

        public int DocFinanceiroId { get; set; }

        public virtual DocFinanceiro DocFinanceiro { get; set; }

        public decimal ValorTotal { get; set; }
    }
}

还有他的 ViewModel:

public class DocFinanceiroViewModel
{
        public DocFinanceiroViewModel()
        {
            ValorPago = QuitacoesDocFinan.Where(x => x.Cancelada == false).Sum(x => x.ValorTotal);
        }

        public virtual ICollection<QuitacaoDocFinanViewModel> QuitacoesDocFinan { get; set; }

        public decimal ValorPago { get; set; }
}

public class QuitacaoDocFinanViewModel
{
        public int AutoId { get; set; }

        public int DocFinanceiroId { get; set; }

        public virtual DocFinanceiroViewModel DocFinanceiro { get; set; }

        public decimal ValorTotal { get; set; }
}

以及 DocFinanceiro 和 DocFinanceiroViewModel 之间的映射:

    public class DomainToViewModelMappingProfile : Profile
    {
        public DomainToViewModelMappingProfile()
        {
            CreateMap<DocFinanceiro, DocFinanceiroViewModel>().ForMember(x => x.ValorPago, y => y.Ignore())                                                                                                            
                                                                    .MaxDepth(3)
                                                                    .PreserveReferences();

            CreateMap<QuitacaoDocFinan, QuitacaoDocFinanViewModel>();
        }
    }

当我仅设置其中一个属性时,此映射有效

.ForMember(x => x.ValorPago, y => y.Ignore())

或者

.MaxDepth(1).PreserveReferences();

,但是当我尝试两个导致异常时。我到处搜索,但没有成功。

以及我进行映射的控制器:

var documentos = Mapper.Map<IEnumerable<DocFinanceiro>, IEnumerable<DocFinanceiroViewModel>>(*repository*);

对不起,如果犯了一些错误,但我不知道该怎么办......

4

1 回答 1

0

您正在尝试在初始化之前访问 DocFinanceiroViewModel 构造函数中的 QuitacoesDocFinan 集合。您的 DocFinanceiroViewModel 应该是这样的:

public class DocFinanceiroViewModel
{
    public virtual ICollection<QuitacaoDocFinanViewModel> QuitacoesDocFinan { get; set; }

    public decimal ValorPago
    {
        get
        {
            return QuitacoesDocFinan.Where(x => x.Cancelada == false).Sum(x => x.ValorTotal);
        }
    }
}
于 2017-04-28T18:20:58.600 回答