Asp.net mvc 5 AutoMapper 6-如何创建忽略并映射对象列表的映射

Asp.net mvc 5 AutoMapper 6-如何创建忽略并映射对象列表的映射,asp.net-mvc-5,entity-framework-6,ef-fluent-api,automapper-6,Asp.net Mvc 5,Entity Framework 6,Ef Fluent Api,Automapper 6,我是AutoMapper的新手,在Stackoverflow和Github上我几乎找不到任何关于v6.0的内容。在这个问题上我需要帮助 我有两个实体: public class DocFinanceiro { public int AutoId { get; set; } public virtual ICollection<QuitacaoDocFinan> QuitacoesDocFinan { get; set; } } public class Qu

我是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; }
    }
}
公共类DocFinanceiro
{
public int AutoId{get;set;}
公共虚拟ICollection QuitacoesDocFinan{get;set;}
}
公共类Quitacodocfinan
{
public int AutoId{get;set;}
public int DocFinanceiroId{get;set;}
公共虚拟DocFinanceiro DocFinanceiro{get;set;}
公共十进制值总计{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; }
}
公共类DocFinanceiroViewModel
{
公共DocFinanceiroViewModel()
{
ValorPago=quitacosesdocfinan.Where(x=>x.Cancelada==false).Sum(x=>x.ValorTotal);
}
公共虚拟ICollection QuitacoesDocFinan{get;set;}
公共十进制值{get;set;}
}
公共类QuitaCoDocFinanViewModel
{
public int AutoId{get;set;}
public int DocFinanceiroId{get;set;}
公共虚拟DocFinanceiroViewModel DocFinanceiro{get;set;}
公共十进制值总计{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>();
        }
    }
public类DomainToViewModelMappingProfile:Profile
{
公共领域OvidEWModelMappingProfile()
{
CreateMap().formMember(x=>x.ValorPago,y=>y.Ignore())
.MaxDepth(3)
.references();
CreateMap();
}
}
当我只设置这些属性中的一个时,此映射会起作用

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

.MaxDepth(1).PreserveReferences()

,但当我尝试两个时,会导致异常。我到处寻找,但没有成功

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

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

很抱歉,如果出错,我不知道该怎么办…

您正在尝试在初始化之前访问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);
        }
    }
}
公共类DocFinanceiroViewModel
{
公共虚拟ICollection QuitacoesDocFinan{get;set;}
公共十进制ValorPago
{
得到
{
返回quitacosesdocfinan.Where(x=>x.Cancelada==false).Sum(x=>x.ValorTotal);
}
}
}

谢谢你的回复,但我做了这个映射,只是没有提出问题。我将编辑并添加此代码。将异常详细信息和自动映射版本添加到已更改答案的描述中