我在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; }
}
}他的ViewModels:
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*);抱歉犯了什么错,但我不知道该怎么做.
发布于 2017-04-28 18:20:58
在初始化之前,您正在尝试访问DocFinanceiroViewModel构造函数中的DocFinanceiroViewModel集合。您的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);
}
}
}https://stackoverflow.com/questions/43681953
复制相似问题